2010-08-19 3 views
7

Ich habe eine Rails-Anwendung, die Bundler für das Abhängigkeitsmanagement verwendet. Ich habe in meinem Gemfile folgende bekam:Wie kann ich einige gebündelte Edelsteine ​​vom Laden von Plugins ausschließen?

# default group: 
gem 'json' 

group 'development' do 
    gem 'my_profiler' 
end 

group 'test' do 
    gem 'mocha' 
end 

group 'deployment' do 
    gem 'foo' 
end 

Ich nenne Bundler.setup(:default, RAILS_ENV.to_sym) und Bundler.require(:default, RAILS_ENV.to_sym) in meinem initializers.

Das Problem ist, dass seit Bündler die Edelsteine ​​in vendor/bundle/ setzt, Rails alle gems initialisiert, die eine init.rb haben, nicht nur die für die aktuelle Umgebung. Wie verhindere ich, dass Rails Foo's init.rb automatisch lädt?

+2

Als Hinweis, wenn Sie bundler verwenden, sollten Sie wahrscheinlich 'verwenden Rails.root' anstelle von 'RAILS_ROOT' und' Rails.env' anstelle von 'RAILS_ENV' – tadman

+0

Löschen Sie den Anbieter/Bundle/Ordner. Oder installiere die Edelsteine ​​in einem rvm gemset und stelle sicher, dass du deine Umgebung richtig eingestellt hast. – thomasfedb

Antwort

1

Welche Version von Bundler verwenden Sie? jüngeren sollten nicht in Anbieter installieren

+0

0.9.26. Keine sofortige Möglichkeit, in dieser App auf 1.0 zu aktualisieren. –

+0

Ich denke, ältere Versionen unterstützen --path, also Bündel installieren - Pfad anders/Speicherort sollte funktionieren –

11

können Sie die --without-Flag verwenden, um auszuschließen Umgebungen

$ bundle install --without development test 

http://gembundler.com/groups.html

+0

Es ist nicht so, dass _bundler_ lädt die Edelsteine; es ist, dass Rails durch das Händlerverzeichnis blubbert und sie als Edelstein-Plugins behandelt. Spätere Versionen von Bundler legen keine Edelsteine ​​in das Lieferantenverzeichnis. –

Verwandte Themen