我的生产和开发环境都有以下配置。
config.action_mailer.smtp_settings = {
:address => "smtp.mandrillapp.com",
:port => 587,
:user_name => ENV["MANDRILL_USERNAME"],
:password => ENV["MANDRILL_PASSWORD"]
}
我用谷歌搜索了一段时间,但我找不到让我理解的答案。如何为我的rails项目的开发和生产设置ENV变量?
答案 0 :(得分:2)
对于开发,您将需要使用在版本控制中忽略的配置文件。它可能是YAML,JSON,ruby,bash ......这是一个微不足道的选择。然后,您将使用初始化程序文件来确保在应用程序启动时加载这些变量。对于生产,您可以将配置文件(甚至可能有不同的设置)复制到正确的位置作为部署过程的一部分;或者如果您使用的是heroku,则可以使用heroku config:add YADA=yada
从命令行设置这些。
以下是来自YAML文件的设置的基本示例:
# config/settings.yml
development:
MANDRILL_USERNAME=secret_username
MANDRILL_PASSWORD=secret_password
ANOTHER_SECRET_SETTING=the_list_goes_on_and_on
production:
MANDRILL_USERNAME=different_username
MANDRILL_PASSWORD=another_password
ANOTHER_SECRET_SETTING=get_the_idea?
# .gitigore
# ...
config/settings.yml
# config/initializers/environment_settings.rb
environment_settings = YAML.load_file('./config/settings.yml')[Rails.env]
environment_settings.each do |key, value|
ENV[key] ||= value
end
答案 1 :(得分:1)
他们的环境变量;你没有把它们用于开发和生产。
您可以通过多种方式设置应用程序配置变量,也可以在运行之前在shell中设置它们,也可以使用特定于环境的名称,或者......