主页 > 知识库 > 网络编程 > Ruby >

Rails 4.0 先睹为快:异步 ActionMailer

来源:oschina 作者:红薯 发表于:2012-06-27 08:36  点击:
前一篇文章我们介绍了 Rails 4.0 的作业队列系统。今天介绍异步 ActionMailer。 在后台发送邮件是非常简单的,只需要简单的在 application.rb 中设置即可: 1 config.action_mailer.async = true 或者如果你只想在程序中指定异步邮件: 1 class WelcomeMailer
前一篇文章我们介绍了 Rails 4.0 的作业队列系统。今天介绍异步 ActionMailer。
在后台发送邮件是非常简单的,只需要简单的在 application.rb 中设置即可:
1 config.action_mailer.async = true
 
 
或者如果你只想在程序中指定异步邮件:
1 class WelcomeMailer < ActionMailer::Base
 
2   self.async = true
 
3 end
 
就这么简单,这样邮件的发送就会通过后台的作业来进行。
你可能还需要关心传递给 mailer 的参数是否被正确的处理,不要使用如下方法:
1 WelcomeMailer.welcome(@user).deliver
 
 
而是要这样:
1 WelcomeMailer.welcome(@user.id).deliver
 
然后在你的 mailer 中:
1 class WelcomeMailer < ActionMailer::Base
 
2   def welcome(id)
 
3     <a href="http://my.oschina.net/u/191962" target="_blank" rel="nofollow">@user</a>  = User.find(id)
 
4     ...
 
5   end
 
6 end
 
 

切换

默认的队列系统是 Rails.queue,但你可以自己定制一个队列系统,只需要重写 ActionMailer::Base#queue 即可:
1 class WelcomeMailer < ActionMailer::Base
 
2   def queue
 
3     MyQueue.new
 
4   end
 
5 end
 
 
你定制的队列需要作业提供 #run 方法。
本文中的很多代码都来自于 Nick Plante'sresque_mailer gem.
英文原文

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%