Rails 5 与 DelayedJob 导致错误

Rails 5 with DelayedJob resulting in an error

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

简而言之,我正在尝试使用 DelayedJob 的 'handle_asynchronously' 方法发送电子邮件。我已经创建了邮件程序并在我的模型中添加了回调,但是当我在 Heroku 上提交表单时,我看到了 Rails 错误屏幕。在我的日志中,我看到一条错误 'ArgumentError: wrong number of arguments (given 1, expected 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 中做些不同的事情吗?

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

def send_welcome_mail
    FooMailer.welcome_email(self).deliver_later
end

那么你就不需要 handle_asynchronously 调用了。

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

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