处理生产环境中的环境变化

时间:2013-12-31 07:15:43

标签: ruby-on-rails ruby development-environment

我曾经参与过多个铁路项目,但他们一直在我自己完成的一个项目中,只有少数我已部署到像heroku这样的东西并且经常使用。我刚刚与其他一些开发人员开始了一个项目,而且我并不完全熟悉这种类型的环境。特别是,处理我的本地环境的变化,并保持其他开发人员'环境同步。

例如,我刚刚为ActionMailer添加了配置,以使用我们的sendgrid帐户并将值作为环境变量放在我的系统上。当其中一个开发人员从源代码​​控制中提取我的更改时,他们就不会拥有这些环境变量。所以,我必须手动发送一些东西告诉他们要添加什么。

我的问题是,处理这样的事情的标准是什么?我会用耙子想象一下吗?有没有办法自动化它,以便在完成拉动时自动进行更改?

1 个答案:

答案 0 :(得分:1)

您可以在配置文件中添加不同环境的配置,并在您的环境中使用它们。

//例如:

common: &common
  http_auth:
    username: 
    password:

 development
   <<: *common
 test:
  <<: *common

 staging:
  <<: *common

 production:
  <<: *common

您可以使用AppConfig.http_auth [“username”],AppConfig.http_auth [“password”]

在您的应用程序中使用这些已定义的变量

如果你部署到heroku,你可以指定可以在heroku上设置的ENV变量,并按如下方式访问:

config.action_mailer.smtp_settings       = {
 :address        => smtp.sendgrid.net,
 :port           => ENV['SENDGRID_PORT'],
 :authentication => :plain,
 :user_name      => ENV['SENDGRID_USER_NAME'],
 :password       => ENV['SENDGRID_PASSWORD'],
 :domain         => AppConfig.preferred_host
}