0

나는 carrierwave_backgrounder에서 carrierwave_direct로 전환했습니다. carrierwave_direct를 설정하고 작동시킵니다. 즉, 주 파일이 업로드되고 뷰에 표시 될 수 있습니다. 그러나 내 업 로더 버전이 생성되지 않습니다. carrierwave이 버전을 처리하도록 지시 할 때, 버전이 carrierwave_direct를 사용하여 처리하지 않는 경우는 언제입니까?

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 

정확히 버전을 처리 carrierwave_direct 않습니다 --- 나 :

다음은 내 일입니까? expense.remote_receipt_url을 사용하여 원본 이미지를로드 한 다음 save를 호출한다고 가정합니다! 업 로더가 버전을 처리하도록 트리거합니다. 그 맞습니까?

어쨌든 내 원본 이미지는 백그라운드 작업을 통해 업로드되고 있습니다. 그러나 버전은 생성/업로드되지 않습니다.

이전에 존재하지 않았던 "recreate_versions"가 필요합니까? 소스 파일을 가리킨 후에 버전을 명시 적으로 처리해야합니까, 아니면 자동으로 처리해야합니까?

+0

위의 내용이 정확하다는 것을 알았습니다. 저장하십시오! 원격 파일을로드 한 후 조치가 업 로더를 트리거합니다. S3의 파일에 content_type 'binary/octet-stream'이 있기 때문에 제 버전이 만들어지지 않을지 궁금합니다. – hellion

답변

0

할당 한 후에 모델을 저장하지 않았습니다. 키를 보내기 전에 작업자에게 보냄. 나는 백그라운드 작업자에게 키를 인자로 보내고 그 모델을 작업 처리에 저장했다. 이것이 문제였습니다. 문서에 할당 된 후에 모델을 저장해야하는 이유는 성공 동작의 키입니다.

그래서 update_attributes (key : params [: key])를 수행 한 다음 배경 작업 (모델이 다시 저장되는 곳)을 호출해야합니다.