如何动态设置主机在配置/环境/ production.rb:in rails将config.action_mailer.default_url_options设置为当前应用程序的主机是什么?
config.action_mailer.default_url_options = { :host => THE_HOST}
这是为了让应用程序正常工作的分期,当在生产的时候。我们的登台服务器是stage.app.com,链接需要去那里。
如何动态设置主机在配置/环境/ production.rb:in rails将config.action_mailer.default_url_options设置为当前应用程序的主机是什么?
config.action_mailer.default_url_options = { :host => THE_HOST}
这是为了让应用程序正常工作的分期,当在生产的时候。我们的登台服务器是stage.app.com,链接需要去那里。
在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。对于分级环境中运行的应用程序,轨道将(与发展相同或您定义的任何自定义环境)自动加载临时文件
这一个过滤器之前在application_controller地址:
ActionMailer::Base.default_url_options = {:host => request.host_with_port}
谢谢@Oliver! – 2014-05-15 15:03:30
这绝对是一个不好的做法。您将发送电子邮件绑定到请求,因此从基于非请求的调用发送的任何电子邮件都将失败:rake任务,resque工作人员等。 – 2014-07-16 10:50:59
首先,错字:当你的意思是'config/environments/production.rb'时,你已经把'config/production.rb'放在了一起,并且与分段相同。为了扩大这个答案,你不需要动态设置主机。对于生产中的应用程序,将评估production.rb。对于在临时环境中运行的应用程序,rails会自动加载临时文件(与开发或您定义的任何定制环境相同)。 – 2012-03-08 00:45:42
谢谢@BrettBender。我将你说的话写入我的答案。 – nicholaides 2012-03-08 00:51:21
如果我有两个站点以生产模式运行,该怎么办?一个是真正的生产,另一个是QA。 – Paul 2012-04-19 17:31:50