【问题标题】:Handling environment changes in a production rails environment处理生产 Rails 环境中的环境变化
【发布时间】:2013-12-31 07:15:43
【问题描述】:
我参与过几个 Rails 项目,但他们一直都是我自己完成的一次性项目,我只有少数几个项目部署到了类似 heroku 的项目中并经常使用。我刚刚和其他几个开发人员一起开始了一个项目,我对这种环境并不完全熟悉。特别是,处理对我的本地环境的更改并保持其他开发人员的环境同步。
例如,我刚刚为 ActionMailer 添加了配置以使用我们的 sendgrid 帐户并将值作为环境变量放在我的系统上。当其他开发人员之一从源代码管理中提取我的更改时,他们将没有这些环境变量。所以,我必须手动向他们发送一些东西来告诉他们要添加什么。
我的问题的重点是,处理此类事情的规范是什么?我会想象一些使用 rake 的东西?有没有办法让它自动化,以便在完成拉取时自动进行更改?
【问题讨论】:
标签:
ruby-on-rails
ruby
development-environment
【解决方案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
}