【问题标题】:delayed_job saving entry but not sending out emaildelay_job 保存条目但不发送电子邮件
【发布时间】:2014-03-19 19:44:09
【问题描述】:

我正在使用delayed_job gem 在销毁记录时发送电子邮件。

cmets_controller.rb

def reject_appeal
    @comment = Comment.find(params[:id])
    if @comment.destroy
      @comment.rejection(@comment)
      flash[:alert] = "You have succesfully rejected the appeal."
      redirect_to post(@comment.post_id)
    end
end

cmets.rb

   def rejection(comment)
    RejectAppeal.delay.notify(comment)
  end

现在,如果我删除延迟方法并将其设置为 RejectAppeal.notify(comment),则电子邮件会非常好地发送出去。但是delay 我不知道会发生什么。我在延迟的作业 lob 日志中看不到任何内容。尽管在开发日志中我确实注意到该条目存储在或至少存储在 BEGINS 操作中。

对此有任何帮助吗?我在同一个应用程序中的其他几个邮件功能上使用延迟方法,它们都可以正常发送,但我不确定这有什么问题

PS 我使用的是 Rails 4.0.1

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-4 delayed-job


    【解决方案1】:

    延迟的作业是否正确序列化? (检查delayed_jobs 表)。运行作业是否出错?如果是这样,错误将存储在last_error 列中。

    这可能是因为您正在销毁您的评论,然后将其传递给延迟的作业,因此,当延迟的作业运行并尝试加载评论以对其进行处理时,无法再找到该评论。

    【讨论】:

    • 我刚刚意识到,当我查询条目时,整个表都返回 nil,这意味着 DJ 表中没有它的条目。我也尝试在破坏之前运行它仍然没有运气。另外,现在我在delayed_job 日志中看到Job Delayed::PerformableMailer
    • 要检查它是否正确序列化,最好关闭延迟作业处理器。您可能还需要配置延迟作业以使用 Delayed::Worker.destroy_failed_jobs = false 保留失败的作业
    • 啊哈!刚刚发现。它说Delayed::DeserializationError
    猜你喜欢
    • 2013-08-12
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2022-12-15
    相关资源
    最近更新 更多