2012-03-07 19 views

回答

5

config/environments/production.rb做到这一点:

config.action_mailer.default_url_options = { :host => 'app.com' } 

config/environments/staging.rb做到这一点:

config.action_mailer.default_url_options = { :host => 'stage.app.com' } 

由于@BrettBender评论:

你并不需要动态设置主机。对于生产中的应用程序,将评估production.rb。对于分级环境中运行的应用程序,轨道将(与发展相同或您定义的任何自定义环境)自动加载临时文件

+0

首先,错字:当你的意思是'config/environments/production.rb'时,你已经把'config/production.rb'放在了一起,并且与分段相同。为了扩大这个答案,你不需要动态设置主机。对于生产中的应用程序,将评估production.rb。对于在临时环境中运行的应用程序,rails会自动加载临时文件(与开发或您定义的任何定制环境相同)。 – 2012-03-08 00:45:42

+1

谢谢@BrettBender。我将你说的话写入我的答案。 – nicholaides 2012-03-08 00:51:21

+0

如果我有两个站点以生产模式运行,该怎么办?一个是真正的生产,另一个是QA。 – Paul 2012-04-19 17:31:50

-1

这一个过滤器之前在application_controller地址:

ActionMailer::Base.default_url_options = {:host => request.host_with_port} 
+0

谢谢@Oliver! – 2014-05-15 15:03:30

+6

这绝对是一个不好的做法。您将发送电子邮件绑定到请求,因此从基于非请求的调用发送的任何电子邮件都将失败:rake任务,resque工作人员等。 – 2014-07-16 10:50:59

相关问题