【问题标题】:Rails: delayed_job mail not sendingRails:delayed_job 邮件未发送
【发布时间】:2012-05-12 21:51:04
【问题描述】:

我正在尝试在 Rails 3.2 中使用delayed_job gem https://github.com/collectiveidea/delayed_job 在后台发送邮件。

我安装了 gem

 gem 'delayed_job_active_record'

我按照指示生成了表并运行了迁移

$ rails generate delayed_job:active_record
$ rake db:migrate

注意 Rails 3 中有针对邮件程序的特殊说明

     # without delayed_job
Notifier.signup(@user).deliver

# with delayed_job
Notifier.delay.signup(@user)

我做到了

 def send_welcome_email

    #UserMailer.welcome_email(self).deliver  <-- original code that worked

   UserMailer.delay.welcome_email(self)        

  end

但是邮件没有发送。在我尝试使用delayed_job之前它正在工作......

有人可以为新手澄清一下吗...?

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

    您是否至少启动了 1 个 delayed_job 工人?

    rake jobs:work
    

    实际上,当您在一个对象上调用delay时,您只是排队一项工作。这意味着将在 DelayedJob 表中创建一个新条目,其中包含与您的作业相关的所有元数据。

    所以你仍然需要一些东西来浏览你所有的DelayedJobentries 并一个一个地运行它们,这就是上面显示的 rake 任务(worker)。

    对于生产,这取决于您在哪里部署应用程序。在 Heroku 上,您只需指定需要多少个工人 (Worker dynos),它们就会自动启动。

    【讨论】:

    • 不,我没有。所以我有责任这样做?如何在不触发它的情况下让它在生产中运行?你可以解释吗?谢谢
    • 是的,你负责启动你的工人。您在使用 Heroku 进行生产吗?
    • 另见github.com/collectiveidea/delayed_job自述文件中的“运行作业”部分
    • @AmokraneChentir 是的,我正在使用 Heroku 进行生产
    • @Michael 好的,看看我的编辑。您只需要在资源页面上指定您需要多少个工人(1 开始就可以)。
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 2015-02-02
    • 2016-03-21
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多