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:
我已经安装了 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: