2013-10-30 26 views
6

I telecomandi sono stati configurati su Heroku per la produzione e la gestione temporanea.Qual è il modo corretto Per aggiungere un: gruppo di gestione temporanea a Mio file Gemma

Sulla messa in scena ho impostato ENV della app per includere:

RACK_ENV=staging 
RAILS_ENV=staging 

Vorrei essere in grado di specificare un gruppo staging nel mio Gemfile nello stesso modo in cui posso attualmente usare production, test o assets:

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

Ho capito come aggiungere gruppi personalizzati. Dal mio application.rb:

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

Ma come faccio ad aggiungere un gruppo che viene caricato solo nella stadiazione?

Ho provato senza successo:

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

Un po 'fuori tema, ma qual è il vantaggio di avere un Gemfile separata per la stadiazione vs produzione? L'ambiente di staging non dovrebbe imitare quello di produzione il più vicino possibile? – tyler

+0

@tyler. Voglio alcune attrezzature di logging/debugging su staging che non voglio in produzione. – Undistraction

+1

@Pedr può forse risolvere questo problema usando il gruppo di produzione, ma usando '' 'require: false''' per non richiedere questo ingranaggio di registrazione durante l'esecuzione. E in staing.rb config inserire implicita richiesta di questo ingranaggio per abilitarlo. – Waterlink

risposta

8

tuo Gemfile potrebbe includere un gruppo come segue:

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

creare un ambiente per la stadiazione

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

La ragione per questo funziona è trovato in /config/application.rb.

Rails.groups include: gruppo predefinito (tutte le gemme non raggruppate) e il gruppo gemma che corrisponde al nome dell'ambiente, impostato da RAILS_ENV, che in questo caso sarebbe "staging". Il tuo bisogno Il tuo Bundler.require dovrebbe assomigliare:

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

Per maggiori informazioni riguardo Bundler e gruppi, leggere http://bundler.io/v1.5/groups.html