我的应用程序必须在三个不同的环境中运行,称为dev,beta和prod。
我在heroku上创建了三个不同的应用程序,因此可以同时运行所有环境,并在需要时将代码从正确的git repo部署到正确的应用程序。我认为这是完全正常的情况: - )
我在git上有一个分支用于开发目的,当我需要时,我分支测试版在beta上进行部署,当它准备就绪时,我在prod上部署并合并回到主干,遵循这个branching model
我想添加New Relic监控系统,作为Heroku附加组件,仅用于其中一个应用程序,即生产一个。 要安装New Relic,你必须在Gemfile中包含一个gem,所以我需要只为生产Gemfile包含gem。
鉴于Heroku上的当前堆栈不支持Gemfile中的组,我该如何实现这一目标?在投入生产之前,我是否应该手动管理每个宝石文件?
修改
为了更好地对我尝试的内容进行细化,也许我错过了一些明显的东西:
我添加了
group :production do
gem 'newrelic_rpm'
end
到Gemfile。 我的开发环境将RACK_ENV和RAILS_ENV设置为开发,当我推送到heroku时,应用程序部署了newrelic gem。
答案 0 :(得分:0)
鉴于Heroku上的当前堆栈不支持中的组 Gemfile
我不认为这是一个准确的陈述。
group :production do
gem 'some_production_gem'
end
只会在some_production_gem
环境中安装production
。使用RACK_ENV
和RAILS_ENV
env vars为您的单独应用程序管理它。如果您在Heroku环境变量中指定了group :staging
,我相信RAILS_ENV: staging
的工作方式会相同。
答案 1 :(得分:0)
来自https://devcenter.heroku.com/articles/bundler#specifying-gems-and-groups ...
如果您想在雪松上使用BUNDLE_WITHOUT
,则需要启用user-env-compile
功能标记。启用功能标志后,您可以使用BUNDLE_WITHOUT
config var:
$ heroku config:set BUNDLE_WITHOUT="development:test"
来自https://devcenter.heroku.com/articles/labs-user-env-compile#enabling ...
启用此功能:
$ heroku labs:enable user-env-compile -a myapp
Heroku的安全提示:
使用user-env-compile
功能不鼓励,因为它会将您的配置变量写入明文中的slug。