2013-10-30 26 views
6

プロダクションとステージングのためにHerokuにリモコンをセットアップしました。ステージングで私のGemfileにステージンググループを追加する正しい方法は何ですか

私が含まれるように、アプリのENVSを設定している:

RACK_ENV=staging 
RAILS_ENV=staging 

私は現在productiontestまたはassetsを使用することができます同じように、私のGemfilestagingグループを指定できるようにしたいと思います:

group :staging do 
    gem "example", "~> 0.9" 
end 

私はカスタムグループを追加する方法を理解しています。私application.rbから:

groups = { 
    assets: %w(development test) 
    } 
    Bundler.require(:security, :model, :view, *Rails.groups(groups)) 

しかし、私は唯一のステージングにロードされているグループを追加するにはどうすればよいですか?

私は成功せずに試してみた:

# Gemfile 
    group :staging do 
    gem 'example','~>1.0' 
    end 

この理由

# /config/environments/staging.rb 
... 
copy config/environments/production.rb code here with adjustments as needed 
... 

をステージング環境を作成します。次のように

groups = { 
    assets: %w(development test), 
    staging: %(staging) 
    } 
    Bundler.require(:security, :model, :view, *Rails.groups(groups)) 
+1

ビットの読出しが、生産の対ステージング用に別のgemfileを持つことの利点は何である:あなたのBundler.requireは次のようになりますか?ステージング環境は、制作環境を可能な限り模倣していないのでしょうか? – tyler

+0

@タイラー。私はいくつかのロギング/デバッグの準備を私は生産にしたくないステージングしたい。 – Undistraction

+1

@Pedrはプロダクショングループを使ってこの問題を解決するかもしれませんが、 '' 'require:false'''を使って実行時にこのログを必要としません。そして、staing.rbの設定では、このギアを有効にするために暗黙の必要があります。 – Waterlink

答えて

8

あなたのGemfileには、グループを含めることができます作品は/config/application.rbにあります。

Rails.groupsには:デフォルトグループ(グループ化されていないすべての宝石)と、RAILS_ENVで設定された環境名と一致するgemグループ(この場合は「ステージング」)が含まれます。あなたの必要。バンドラーとグループに関する詳細情報については

Bundler.require *Rails.groups(:assets => %w(development test)) 

は、トピックオフhttp://bundler.io/v1.5/groups.html

関連する問題