在我的rails应用程序中,我为heroku配置了三种不同的环境/遥控器:
在我的游乐场环境中,我根本不想发送电子邮件通知,因此我需要告诉我的production.rb它应该忽略此环境中的电子邮件发送。
到目前为止,我已通过request.subdomain
访问了环境信息,但我不相信这是一个很好的最佳做法。此外,request.subdomain在模型或邮件程序中不可用,因此它具有无用的长期性。
根据我使用的不同遥控器配置我的rails应用程序的最佳做法是什么?
另一个用例是设置一个passwort,如果我正在进行分段。到目前为止,我通过应用程序控制器和一个简单的黑客来做到这一点:
if request.subdomains.first == 'staging-myapp'
authenticate_or_request_with_http_basic do |username, password|
username == "user123" && password == "12345"
end
end
答案 0 :(得分:1)
你可以添加一个新的环境" playground"并将邮件设置设置为您喜欢的内容。
检查How to create a new environment in Ruby on Rails?以获取有关如何创建新环境的详细说明。
答案 1 :(得分:1)
为每个遥控器设置不同的config variables,并使用相同的引用在代码中访问它们,例如。
authenticate_or_request_with_http_basic do |username, password|
username == ENV['USERNAME'] && password == ENV['PASSWORD']
end
所以对于每个遥控器你都会这样做:
heroku config:set USERNAME=productionpassword --app production-app
heroku config:set USERNAME=stagingpassword --app staging-app
heroku config:set USERNAME=playground --app playground-app
以同样的方式,您可以在 production.rb 文件中指定配置变量(例如,用于您的Mailer设置),因此您不需要单独的staging.rb和playground。 rb使用Heroku时。您可以在Heroku文档here和here中了解详情。