Rails, Amazon S3 storage, CarrierWave-Direct and delayed_job - is this right? -


i've discovered heroku doesn't have long-term file storage need move using s3 or similar. lot of new bits , pieces head around have understood how direct upload s3 using carrierwave-direct , processing delayed_job should work rails app?

what think should happen if code correctly following:

  1. i sign s3 account, set-up bucket(s) , authentication details etc need program in (suitably hidden users)
  2. i make sure direct upload white lists don't stop cross-domain preventing uploads (and later downloads)
  3. i use carrierwave & carrierwave-direct (or similar) create uploads avoid loading app during uploads
  4. s3 create random access ('filename') information don't need worry multiple users uploading files same name , files getting overwritten; if care original names can use metadata store them.
  5. carrierwave-direct redirects users browser 'upload completed' url after upload can either create delayed_job or popup 'sorry, went wrong' notification.
  6. at point user knows job attempted , move on other stuff.
  7. my delayed_job task accesses file using s3 apis , can delete input file when completed.
  8. delayed_job completes , notifies user in usual way e.g. e-mail.

is or missing something? thanks.

you have understanding of process need. throw 1 more layer of complexity @ you---you should wrap of in rails new(er) activejob. activejob facilities background processing inside rails via processor of choosing (in case delayedjobs). then, can create jobs via rails generator:

 bin/rails g job process_this_thing 

active jobs offers few "rails way" of handling jobs...but, allows switch processors less hassle.

so, create carrierwave uploader (see carrierwave docs). then, attach uploader model. carrierwave_direct need disassociate file field models form , move file field own form (use form url method provided carrierwave-direct).

you can choose upload file, save record. or, save record , process file. set-up process different depending on choose.

carrierwave , carrierwave-direct know save file based on fog credentials put in carrierwave initializer , using store_dir path, if set, in uploader.

carrierwave provides uploader, define versions, etc. carrierwave_direct facilities uploading direct s3 bucket , processing versions in background. active jobs, via delayedjobs, provides background processing. fog link between carrierwave , s3 bucket.

you should add boolean flag model set true when carrierwave_direct uploads image , set false when job finishing processing versions. way, instead of broken link (while job running , not yet complete) view show 'this thing still processing...'.

railscast perfect resource completing task. check out: https://www.youtube.com/watch?v=5mj55_bu_jm


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -