0

I have just switched from carrierwave_backgrounder to carrierwave_direct. I have carrierwave_direct set up and functioning. That is, the main file is being uploaded and can be displayed in the view. However, my uploader versions are not being created.

Following is my job:

class ProcessReceiptJob < ApplicationJob
  queue_as :process_receipt

  def perform(expense_id, key)
    expense = Expense.find expense_id
    uploader = expense.receipt
    expense.key = key
    expense.remote_receipt_url = uploader.direct_fog_url(with_path: true)
    expense.save!
   # expense.recreate_versions!
  end

  after_perform do |job|
    expense = Expense.find(job.arguments.first)
    expense.update_column :receipt_processing, false
  end

end

When exactly does carrierwave_direct process the versions---or, when is carrierwave instructed to process the versions? I'm assuming that loading the original image using expense.remote_receipt_url, and then calling save! triggers the uploader to process the versions. Is that correct?

In any case, my original image is being uploaded via a background job---however, the versions are not being created/uploaded.

Do I need to "recreate_versions" even thought they don't previously exist? Do I need to somehow explicitly process versions after pointing to the source file or should that be handled automagically?

hellion
  • 4,602
  • 6
  • 38
  • 77
  • So, I see that my statement above is correct..the save! action after loading the remote file will trigger the uploader. I'm wondering if my versions are not being created because the file from S3 has content_type 'binary/octet-stream'... – hellion Jan 16 '17 at 05:55

1 Answers1

0

I was not saving the model after assigning it :key BEFORE sending it the background worker. I was sending the key to the background worker as an argument and then saving the model in processing the job. This was the problem. It is mentioned in the docs the need to save the model after assigning it :key in the success action.

So, I had to update_attributes(key: params[:key]) and THEN call my background job (where incidentally the model is saved again).

hellion
  • 4,602
  • 6
  • 38
  • 77