入门:使用延迟作业发送电子邮件在Rails中发送电子邮件

时间:2014-01-24 15:36:25

标签: ruby-on-rails delayed-job

我是新来的延迟工作。我正在尝试配置延迟作业以发送电子邮件。在我的模型中,我有......

  def send_reminder_emails
    NsoMailer.send_reminder_emails(self)
  end

我在app / mailers / nso_mailer.rb中有相应的send_reminder_emails操作,在registrations / reminder_email.html.erb中有测试电子邮件。

我已按照https://github.com/collectiveidea/delayed_job中的说明安装延迟作业和守护进程宝石。现在我的问题是如何配置工作?在这种情况下,我认为工作应该是Delayed :: Job.enqueue Registrations.send_email_reminders ??? github wiki上的文档似乎有些缺乏。我知道有脚本/ delayed_job文件。我应该修改这个文件吗?

如果有人可以建议一个很好的入门页面或博客。我在我自己的服务器上运行它(没有heroku),我们也有自己的SMTP服务器(所以没有sendgrid或第三方邮件服务)。邮件已在服务器上配置,我已成功发送电子邮件。我对delayed_job的目标是每天发送一次提醒电子邮件。

对正确方向的任何帮助或推动都非常感激。

1 个答案:

答案 0 :(得分:0)

如果要异步调用模型上的方法,则可以执行以下操作:

model_instance.delay.send_reminder_email

如果你想直接在邮件程序上调用一个方法,那么你会做类似的事情(我假设在nso_mailer.rb中定义的方法名是reminder_emails):

NsoMailer.delay.reminder_emails(model_instance)

在我的项目中,我通常有一个服务对象处理所有通知或创建一个处理电子邮件发送的问题。

一个很好的资源可以看看Ryan Bates的铁路广播“服务对象”或阅读DHH关于使用问题的博客文章Put chubby models on a diet with concerns

至于您的设置问题,如果您通过capistrano进行部署,那么您可以在部署成功后调用bundle exec bin/delayed_job restart以重新启动DJ守护程序。