带有DelayedJob的Rails 5导致错误

时间:2016-05-31 18:24:12

标签: ruby-on-rails ruby heroku delayed-job

我已经安装了Rails 5.0.0.rc1以及DelayedJob gem。我有一些代码在之前的Rails应用程序(Rails4.2)中运行得非常好,但由于某种原因它现在在heroku上继续生产失败。

简而言之,我尝试使用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中做一些不同的事情吗?

2 个答案:

答案 0 :(得分:5)

在我看来,Delayed Job还不支持Rails 5:

https://github.com/collectiveidea/delayed_job/issues/896

答案 1 :(得分:4)

我认为使用ActiveJob作为排队后端的抽象可能是个好主意。类似的东西:

def send_welcome_mail
    FooMailer.welcome_email(self).deliver_later
end

然后您不需要handle_asynchronously电话。