2012-12-08 6 views
0

URL 존재를 확인하고 존재하지 않는 경우 사진 개체를 만들 수있는이 간단한 방법이 있습니다.delayed_job이 클립 작업을하지 않습니다.

def create_profile_photo(user_id,image_url) 
    if Photo.find_by_external_url(image_url).blank? 
    profile_photo = Photo.new 
    profile_photo.user_id = user_id 
    profile_photo.picture_from_url(image_url) 
    profile_photo.save 
    end 
end 

# Photo.rb 
def picture_from_url(url) 
    self.external_url = url 
    self.attachment = URI.parse(clean_url) 
end 

작동하지 않습니다. 하지만 delayed_job을 사용하여이 방법을 실행하려고하면 작동하지 않습니다.

ruby-1.9.2-p290 :085 > MyClass.new.delay.create_profile_photo(347,'http://www.google.com/images/srpr/logo3w.png') 
(0.4ms) COMMIT 
=> #<Delayed::Backend::ActiveRecord::Job id: 42, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::ProfileableMethod\nobject:...", last_error: nil, run_at: "2012-12-08 21:40:06", locked_at: nil, failed_at: nil, locked_by: nil, queue: nil, created_at: "2012-12-08 21:40:06", updated_at: "2012-12-08 21:40:06"> 
ruby-1.9.2-p290 :085 > Photo.count 
    (0.3ms) SELECT COUNT(*) FROM "photos" 
=> 0 

어떤 생각?

+1

나는 이런 종류의 문제 때문에 DJ를 포기했다. 관심이 없으면 데몬을 다시 시작하면로드 할 수 있습니까? – simonmorley

답변

1

photos 테이블에는 물론 Photo 인스턴스가 없습니다. 귀하의 콘솔에 따르면, 당신이 한 일은 대기열에 넣어.

DJ 작업자가 실행 중이 아니면 DJ 대기열을 처리 할 수 ​​없습니다. DJ 대기열이 처리되지 않으면 대기중인 작업이 실행될 것으로 기대할 수 없습니다. 대기중인 작업이 실행되지 않은 경우 photos에 새 레코드가있을 것으로 기대할 수 없습니다.

아래 명령을 실행하면 실행 대기중인 작업이 여전히 대기열에 있음을 알 수 있습니다.

Delayed::Job.find(42) 

개발에서 DJ가 데몬을 시작하려면 다음을 실행합니다. @simonmorley가 제안

script/delayed_job 

그리고 마지막으로, 당신은 죽이고 작업이 응용 프로그램의 최신 버전에 의해 처리하기 위해 코드 변경 간의 데몬을 다시 시작해야합니다.

관련 문제