ruby-on-rails-3
  • paperclip
  • delayed-job
  • 2012-05-28 4 views 2 likes 
    2

    저는 Paperclip을 사용하여 이미지 업로드를 지원하는 모바일 앱용 API를 구축하고 있습니다. 클립은 S3 스토리지로 설정되어 정상적으로 작동합니다.Paper Clip 및 Delayed Jobs를 사용하여 S3에 이미지 업로드

    Delayed Jobs (백그라운드에서 Heroku에서 호스팅 됨)를 사용하여 서버에서 S3로 업로드하고 싶습니다.

    결과는

    UPDATE "delayed_jobs" SET "last_error" = '{uninitialized stream 
    

    가 어떻게 배경 업로드 할 수있는 지연 채용

    에 의해, 오류를 @ user.delay.photo = File.open 같은 뭔가 (...)를하는 시도?

    답변

    2

    IO 개체는 마샬링되어 쉽게 다시 검색 할 수 없습니다.

    .delay 메서드를 사용하면 작업을 처리 할 때 데이터베이스 레코드에 개체를 덤프하고 다시 가져옵니다. 이렇게하면 레코드가 크고 부서지기 쉽습니다.

    작업 할 일이 많다면 custom job을 사용하는 것이 좋습니다.

    class UploadJob < Struct.new(:user_id) 
        def perform 
        user = User.find(user_id) 
        user.photo = File.open(.....) 
        end 
    end 
    
    Delayed::Job.enqueue UploadJob.new(@user.id) 
    

    프로젝트의 tmp 디렉토리에 이미지를 쓰고 작업에서 참조하여 직접 할 수 있습니다. 작업이 끝나면 마지막으로 청소를하십시오.

    또는이 보석을 사용해보십시오. delayed_paperclip 더 편리합니다.

    +0

    사진은 params [: photo]에 있습니다. 지연된 작업에 어떻게 전달합니까? Struct.new (: user, : photo) 및 user.photo = 사진이 작동하지 않는 것 같습니다. –

    +0

    params [: photo]이 (가) 업로드 된 파일입니까? – Chamnap

    +0

    멀티 파트/포스트 양식의 이미지 부분입니다. user.photo = params [: photo]는 지연된 작업없이 작동합니다 (Paper Clip 포함) –

    관련 문제