繁体   English   中英

RoR - 发送电子邮件的自动化流程。

[英]RoR - Automated processes that send emails.

我需要从我的RoR应用程序发送一些电子邮件,并希望就如何最好地执行此操作提供一些建议。

以前的问题(例如RoR - 将自动化过程放在何处 )将所有代码放在模型中。 但是 - 因为我发送了一封电子邮件,我将不得不访问电子邮件View。 看起来这个模型并不是最好的选择。

我应该将此过程放在控制器中吗? 如果是这样,从cronjob启动它的最佳方法是什么?

如果您使用的是rails 3.x,则可以将它们放在app / mailers中。 否则,您可以使用lib文件夹来实现此目的。

如果功能很大,您可以将它们拆分为单独的文件并使用以下目录结构:

lib/notifier/a.rb
lib/notifier/b.rb

等等

在Rails 3中,您将在app / mailers /中设置一个ActiveMailer类,将视图模板放在app / views /中,然后您可以在设置环境后正确发送电子邮件。

要访问邮件程序并实际执行发送,您可以在lib / tasks / cron.rake中设置需要环境的Rake任务,如下所示:

namespace :cron

  desc "Sends some emails"
  task :send_emails => [:environment] do 
    MailerName.some_email(:some_option => 'w00t').deliver
  end

end

然后,您可以通过运行bash shell脚本来执行此rake任务,如下所示:

#!/bin/bash
export GEM_HOME=/usr/local/lib/ruby/gems/1.9.1/gems
export GEM_PATH=/usr/local/lib/ruby/gems/1.9.1
cd "/users/yourname/railsapp"
/usr/local/bin/rake cron:send_emails RAILS_ENV=production

请注意,这将在每次运行时加载整个环境。 如果您正在处理大量电子邮件,您可能会发现使用curl定期点击服务器上的特定URL会更好,这样您就可以使用现有服务器Rails实例而不是在每次运行时启动新服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM