2012-09-01 3 views
0

내 응용 프로그램의 일부 프로세스에 delayed_job을 사용하고 있습니다. 아무 효과가 없으며 즉시 코드를 실행합니다. 다음은 코드입니다.지연된 작업의 정의를 호출하는 올바른 방법

Module1::some_definition(param).delay(priority=>3, :run_at=>2.minutes.from_now) 

내가 잘못 했습니까?

업데이트 : 이것은 내가 dimitko가 제안한 것입니다. 하지만 여전히 오류가 발생합니다.

class User < ActiveRecord::Base 
    def do_something 
     #Google is my module and the do_some_process is definition. 
     Google.delay.do_some_process 
    end 
end 

답변

0

.delay의 아이디어는 호출하려는 실제 작업 방법으로 연결하는 것입니다.

class User < ActiveRecord::Base 
    def do_something 
    # ... do something long which you want to be in the background... 
    end 
end 

는 것 delayed_job이 코드를 지연의 "적절한"방법 :

User.current.delay(priority=>3, :run_at=>2.minutes.from_now).do_something 

내가 delayed_job가 귀하의 예제 코드에서 알 수 있듯이 모듈의 .delay 방법을 주입하기위한 것입니다 생각하지 않습니다.

+0

그래서, dat 모듈은 delayed_job과 함께 사용할 수 없습니다. –

+0

나는 그렇게 믿는다. 당신은 코드를 여기에서 확인할 수 있습니다 : https://github.com/collectiveidea/delayed_job – dimitarvp

+0

당신의 코드 제안으로 테스트하려고했을 때 다음 오류가 발생했습니다 ... 사용자 # do_something이 NoMethodError와 함께 실패했습니다 : 정의되지 않은 메소드'do_something ' #

-1

Cron 작업을 설정할 수도 있습니다. 보통 레이크 작업을 만든 다음 Cron 작업을 사용하여 작업을 실행합니다.

감사합니다.