2010-12-16 12 views
2

Ich habe eine neue Umgebung mit Ruby 1.9.2 und Passagier 3 eingerichtet. Eine App Rails 3 wird mit Capistrano bereitgestellt. RAILS_ENV ist auf Staging eingestellt.Passagier 3 mit Rails 3 lädt keine Edelsteine ​​von Hersteller/

Beim Versuch, die Anwendung zu starten, beschwert sich Passagier über einen fehlenden Edelstein.

bundle --deployment 

Laufen installiert Edelsteine ​​zu RAILS_ROOT/Anbieter, aber nicht den Fehler beheben.

Wenn ich das fehlende Juwel als System-Juwel installiere (z. B. sudo gem install), verschwindet der Fehler, aber jetzt wird das nächste Juwel in der Gemdatei als fehlend gemeldet.

Ich könnte dies lösen, indem ich meine Edelsteine ​​in das System installiere, aber ich würde gerne verstehen, warum die Installation in das Herstellerverzeichnis nicht funktioniert. Mein Verständnis ist, dass die Idee von Bundler ist, zu vermeiden, dass alle Edelsteine ​​auf dem System installiert werden müssen.

Ich habe RAILS_ROOT/.bundle/config-Set:

BUNDLE_FROZEN: "1" 
BUNDLE_PATH: vendor/bundle 
BUNDLE_DISABLE_SHARED_GEMS: "1" 

Antwort

0

Idealerweise sollte Edelsteine ​​in einer konsistenten Position bleiben sie jeden deploy neu installiert werden zu vermeiden. Versuchen Sie daher, BUNDLE_PATH aus Ihrer Konfiguration zu entfernen (Standardverzeichnis ist ~/.bundle).

Ich bin mir nicht sicher, was bundle --deployment tut (ich konnte nicht erwähnen, dass dies in der Dokumentation). Ich verwende in meinen Bereitstellungsskripten etwa den folgenden Befehl:

after :'deploy:update_code' do 
    run "cd #{release_path} && bundle install --without test cucumber development" 
end 
+1

Ich kann, was Sie vorschlagen. Ich werde das versuchen, aber ich denke, meine ursprünglichen Fragen bleiben: Warum nimmt Passenger nicht die Edelsteine ​​in Vendor/Bundle ab? Das Flag --deployment ist dokumentiert (und empfohlen) auf der Bundler-Site unter http://gembundler.com/rational.html#deploying-your-application – msmithstubbs

+0

Danke für den Link (seltsam, es gibt keine Erwähnung davon in 'Bündel --Hilfe'). Warum glauben Sie, ist das Problem mit Passagieren? Haben Sie versucht, Skript/Konsole auf Ihrem Server zu laden? – Zubin