【问题标题】:Rails 5 with DelayedJob resulting in an error带有 DelayedJob 的 Rails 5 导致错误
【发布时间】:2016-09-29 21:34:36
【问题描述】:

我已经安装了 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 中做一些不同的事情吗?

【问题讨论】:

  • 你能发布完整的错误跟踪吗?至少有几条顶线。
  • 你对模型有什么属性?名称冲突也可能发生这种情况。

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


【解决方案1】:

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

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

【讨论】:

  • 引用的问题已关闭:应该没问题,现在
【解决方案2】:

我认为使用 ActiveJob 作为队列后端的抽象可能是个好主意。比如:

def send_welcome_mail
    FooMailer.welcome_email(self).deliver_later
end

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

【讨论】:

    猜你喜欢
    • 2018-10-17
    • 2020-11-30
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多