0

我有一个必须在三个不同的环境中运行的应用程序,称为 dev、beta 和 prod。

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

我在 git 上有一个用于开发目的的分支,当我需要时,我分支一个 beta 版本以在 beta 上部署,当它准备好时,我在 prod 上部署并合并回主干,遵循这个分支模型

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

鉴于 Heroku 上的当前堆栈不支持 Gemfile 中的组,我该如何实现这个目标?在投入生产之前,我是否必须手动管理每个 gem 文件?

编辑

为了更好地阐明我的尝试,也许我遗漏了一些明显的东西:

我添加了

group :production do
   gem 'newrelic_rpm'
end

到 Gemfile。我的开发环境将 RACK_ENV 和 RAILS_ENV 设置为开发,当我推送到 heroku 时,应用程序使用 newrelic gem 部署。

4

2 回答 2

0

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

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

group :production do
  gem 'some_production_gem'
end

只会安装some_production_gemproduction环境中。为您的单独应用程序使用RACK_ENVRAILS_ENV环境变量来管理它。如果您在 Heroku 环境变量中指定,我相信group :staging会起作用。RAILS_ENV: staging

于 2013-05-17T15:51:54.913 回答
0

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

如果您想BUNDLE_WITHOUT在 cedar 上使用,您需要启用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

于 2013-08-09T00:06:17.433 回答