我已经安装了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中做一些不同的事情吗?
答案 0 :(得分:5)
在我看来,Delayed Job还不支持Rails 5:
答案 1 :(得分:4)
我认为使用ActiveJob作为排队后端的抽象可能是个好主意。类似的东西:
def send_welcome_mail
FooMailer.welcome_email(self).deliver_later
end
然后您不需要handle_asynchronously
电话。