2016-05-31 3 views
2

레일 5.0.0.rc1과 DelayedJob 젬을 설치했습니다. 나는 이전 Rails 애플 리케이션 (Rails4.2)에서 완벽하게 작동하는 몇 가지 코드를 가지고 있지만, 어떤 이유에서인지 지금 heroku에서 계속 생산에 실패하고 있습니다.레일 5는 지연 오작동으로 인해 오류가 발생했습니다

즉, DelayedJob의 'handle_asynchronously'메소드를 사용하여 이메일을 보내려고합니다. 메일러를 만들고 내 모델에 콜백을 추가했지만, Heroku에서 양식을 제출하면 Rails 오류 화면이 표시됩니다. 내 로그에서 'ArgumentError : 인수의 수가 잘못 (주어진 1, 예상 0)'이라는 오류가 나타납니다. 'handle_asynchronously'메소드를 제거하면 콜백이 작동합니다. 나는 분명히 그러나 DelayedJob을 사용하여 메일 등을 보내고 싶다.

내 코드는 다음과 같습니다 : 내가 언급처럼

FooModel.rb 

.... 
after_create :send_welcome_mail 
def send_welcome_mail 
    FooMailer.welcome_email(self).deliver 
end 
handle_asynchronously :send_welcome_mail 

,이 코드는 Rails4로 완벽하게 일했다. 아무도 나를 도울 수 있습니까? Rails5에서 다르게해야합니까?

+0

당신이 전체 오류 추적을 게시 할 수 있습니까? 적어도 몇 줄의 최고 줄. – BoraMa

+0

모델에 어떤 속성이 있습니까? 이것은 이름 충돌에서도 발생할 수 있습니다. – Max

답변

4

ActiveJob을 대기열 백엔드의 추상화로 사용하는 것이 좋습니다. 예 :

def send_welcome_mail 
    FooMailer.welcome_email(self).deliver_later 
end 

그러면 handle_asynchronously 전화가 필요하지 않습니다. 그것은 지연된 작업처럼 나에게 보이는

관련 문제