2013-10-30 4 views
6

Ich habe auf Heroku Remotes für Produktion und Staging eingerichtet.Was ist die richtige Methode, um eine Staging-Gruppe zu My Gemfile hinzuzufügen

Auf Inszenierung habe ich die App ENVs gesetzt ist:

RACK_ENV=staging 
RAILS_ENV=staging 

ich eine staging Gruppe in die Lage sein möchte in ich zur Zeit meines Gemfile in der gleichen Art und Weise angeben production verwenden kann, test oder assets:

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

Ich verstehe, wie Sie benutzerdefinierte Gruppen hinzufügen. Aus meiner application.rb:

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

Aber wie kann ich eine Gruppe, die nur in der Inszenierung geladen wird?

ich ohne Erfolg versucht haben:

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

ein Umfeld schaffen, das für die Inszenierung

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

Der Grund:

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

Ein bisschen off topic lesen, aber was ist der Vorteil eines separaten gemfile des Habens für vs Produktion inszenieren? Soll die Staging-Umgebung die Produktion nicht so genau wie möglich nachahmen? – tyler

+0

@tyler. Ich möchte einige Logging/Debugging-Ausrüstung auf Staging, die ich nicht auf Produktion möchte. – Undistraction

+1

@Pedr vielleicht lösen dieses Problem durch die Verwendung der Produktionsgruppe, aber mit '' 'require: false''', um diese Logging-Ausrüstung bei der Ausführung nicht zu erfordern. Und in staing.rb Config platzieren implizit erfordern dieses Zahnrad, um es zu aktivieren. – Waterlink

Antwort

8

Ihre Gemfile eine Gruppe wie folgt enthalten könnte Arbeiten finden Sie in /config/application.rb.

Rails.groups enthält die Standardgruppe (alle nicht gruppierten Edelsteine) und die Edelsteingruppe, die dem Namen der Umgebung entspricht, festgelegt durch RAILS_ENV, was in diesem Fall "Staging" wäre. Ihr benötigt. Ihre Bundler.require sollte wie folgt aussehen:

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

Für weitere Informationen über Bündler und Gruppen, http://bundler.io/v1.5/groups.html