2013-05-17 40 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功能是氣餒因爲它寫到你的配置瓦爾成明文蛞蝓

相關問題