Heroku和宝石仅适用于生产环境

时间:2013-05-17 10:49:45

标签: git heroku production-environment gemfile

我的应用程序必须在三个不同的环境中运行,称为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。

2 个答案:

答案 0 :(得分:0)

  

鉴于Heroku上的当前堆栈不支持中的组   Gemfile

我不认为这是一个准确的陈述。

group :production do
  gem 'some_production_gem'
end

只会在some_production_gem环境中安装production。使用RACK_ENVRAILS_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。