Ruby 如何定义环境变量?

Ruby 如何定义环境变量?,ruby,ruby-on-rails-3,environment-variables,Ruby,Ruby On Rails 3,Environment Variables,我的生产和开发环境都有以下配置 config.action_mailer.smtp_settings = { :address => "smtp.mandrillapp.com", :port => 587, :user_name => ENV["MANDRILL_USERNAME"], :password => ENV["MANDRILL_PASSWORD"] } 我在谷歌上搜索了一会儿,但没有找到让我明白的答案。如何为rails项目的

我的生产和开发环境都有以下配置

config.action_mailer.smtp_settings = {
  :address   => "smtp.mandrillapp.com",
  :port      => 587,
  :user_name => ENV["MANDRILL_USERNAME"],
  :password  => ENV["MANDRILL_PASSWORD"]
}

我在谷歌上搜索了一会儿,但没有找到让我明白的答案。如何为rails项目的开发和生产设置环境变量?

它们是环境变量;你没有为开发和生产设置它们


您可以通过多种方式设置应用程序配置变量,也可以在运行前在shell中设置它们,或者可以使用特定于环境的名称,或者…

它们是环境变量;你没有为开发和生产设置它们


您可以通过多种方式设置应用程序配置变量,也可以在运行前在shell中设置它们,或者可以使用特定于环境的名称,或者…

对于开发,您需要使用在版本控制中被忽略的配置文件。可以是YAML、JSON、ruby、bash。。。这是一个微不足道的选择。然后,您将使用初始值设定项文件确保在应用程序启动时加载这些变量。对于生产,作为部署过程的一部分,您可以将配置文件(它甚至可能具有不同的设置)复制到正确的位置;或者,如果您使用的是heroku,您可以在命令行中使用
heroku配置: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

对于开发,您需要使用在版本控制中被忽略的配置文件。可以是YAML、JSON、ruby、bash。。。这是一个微不足道的选择。然后,您将使用初始值设定项文件确保在应用程序启动时加载这些变量。对于生产,作为部署过程的一部分,您可以将配置文件(它甚至可能具有不同的设置)复制到正确的位置;或者,如果您使用的是heroku,您可以在命令行中使用
heroku配置: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

那么它们是如何工作的呢?如何设置应用程序配置变量?我最好说我应该在哪里设置应用程序配置变量?您可以使用配置文件夹中的JSON文件或YAML文件来存储env。变量,以便更好地理解。@Cody我希望能够在github上上载应用程序,但我不想透露密码。。。我该怎么做?@MariusPop不想把密码透露给谁?@DaveNewton好吧,如果我把我的实际密码而不是ENV[“MANDRILL_password”]放在github上,它将是公开的。我想我没有得到那个大皱褶?那么它们是如何工作的呢?如何设置应用程序配置变量?我最好说我应该在哪里设置应用程序配置变量?您可以使用配置文件夹中的JSON文件或YAML文件来存储env。变量,以便更好地理解。@Cody我希望能够在github上上载应用程序,但我不想透露密码。。。我该怎么做?@MariusPop不想把密码透露给谁?@DaveNewton好吧,如果我把我的实际密码而不是ENV[“MANDRILL_password”]放在github上,它将是公开的。我想我没有得到那个大皱褶?