2013-05-17 38 views
0

我有一个应用程序必须在三种不同的环境中运行,称为dev,beta和prod。Heroku和宝石仅适用于生产环境

我在heroku上创建了三个不同的应用程序,因此所有环境都可以同时运行,并且在需要时将代码从正确的git仓库部署到正确的应用程序。我认为这是一个完全正常的情况:-)

我在git上有一个分支用于开发目的,当我需要的时候,我分支一个测试版本在beta上部署,当它准备就绪时,我部署在prod上,合并回主干,继此之后branching model

我想将New Relic监视系统作为Heroku插件添加到应用程序,生产应用程序之一中。 要安装New Relic,您必须在Gemfile中包含一个gem,所以我只需要将gem包含在生产Gemfile中。

鉴于Heroku上的当前堆栈不支持Gemfile中的组,我该如何实现此目标?我需要在投入生产之前手工管理每个创业板文件吗?

编辑

为了更好地clafify是我的尝试,也许我缺少明显的东西:

我加

group :production do 
    gem 'newrelic_rpm' 
end 

到Gemfile中。 我的开发环境已将RACK_ENV和RAILS_ENV设置为开发,当我推送到heroku时,应用程序将与新增宝石一起部署。

回答

0

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

我不相信这是一个准确的说法。

group :production do 
    gem 'some_production_gem' 
end 

只会在production环境中安装some_production_gem。使用RACK_ENVRAILS_ENV env vars为您的单独的应用程序来管理。如果你在你的Heroku环境变量中指定了RAILS_ENV: staging,我相信group :staging的工作原理是一样的。

+0

感谢您的回复,但正如我在https://devcenter.heroku.com/articles/bundler#specifying-gems-and-groups上找到的那样“请注意 - 暂时,Cedar堆栈不支持BUNDLE_WITHOUT “。所以,如果我用组声明指定gem,这根本就不重要,heroku会在我的开发或升级或任何环境中带来宝石。我试着使用New Relic,并立即对我的开发环境应用程序进行了仔细的监控:-)。但也许我想念一些东西...... – emas

0

https://devcenter.heroku.com/articles/bundler#specifying-gems-and-groups ...

如果你想在雪松使用BUNDLE_WITHOUT,您需要启用user-env-compile功能标志。启用该功能后旗,你可以通过使用BUNDLE_WITHOUT配置变种正在安装中排除某些群体:

$ 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功能是气馁因为它写到你的配置瓦尔成明文蛞蝓

相关问题