2012-08-31 10 views
6

Ich versuche eine App aus Github ausgeführt.Wie installierst du Edelsteine ​​aus Gemfile.lock Datei?

Ich habe bundle install ausgeführt, um erforderliche Edelsteine ​​von der Gemfile zu installieren. Beim Ausführen der App wird jedoch eine Fehlermeldung angezeigt, dass die installierten Edelsteine ​​die falsche Version haben.

Bei der Überprüfung der Gemfile.lock stelle ich fest, dass die Versionen älter sind als die Edelsteine ​​installiert. (d. h. ich habe neuere Versionen von Gems installiert und die Anwendung erfordert ältere Edelsteine.)

Gibt es eine schnelle Möglichkeit, alle Edelsteine ​​gemäß den in der Gemfile.lock-Datei beschriebenen Versionen zu installieren? Gibt es alternativ eine Methode, um diese Datei zu ignorieren?

Gemfile:

source 'http://rubygems.org' 
    gem 'rails', "3.0.9" 
    gem "sass" 
    .. 

Gemfile.lock:

sass (3.1.1) 
.. 

Im obigen Beispiel, obwohl sass die App speziell installiert erfordert 3.1.1 Version.

+0

Bundler sollte immer die Versionen in der 'Gemfile.lock' Datei installieren, das ist der Zweck. Hast du niemals Versionen dieser Edelsteine ​​auf deinem System installiert? – janders223

+0

Ich habe neuere Edelsteine ​​installiert als in der App angegeben. Wenn ich ein Bundle installiere, installiere die neueste verfügbare Gem-Version. – dmuk

+3

Löschen Sie einfach die Sperrdatei und führen Sie das Bundle erneut aus. – emrahbasman

Antwort

6

Stellen Sie sicher, Sie laufen auf den Webserver mit bundle execute rails server

+1

+1 auf diesem, müssen Sie den Server von Bundler ausführen, so dass es die richtigen Edelsteine ​​verwendet. –

9

Mit einer gültigen Gemfile.lock Datei, bundle install allein sollte ausreichend sein, es sei denn, einige besondere Juwel Version gezerrt wurde. In diesem Fall müssen Sie nach einer alternativen Edelsteinversion suchen, die noch verfügbar ist (normalerweise genügt bundle update name_of_yanked_gem).

über die sass 3.1.1, ist es nicht so sehr, dass die Anwendung, die bestimmte Version erfordert, sondern vielmehr, dass wahrscheinlich die neueste Version verfügbar war, als die Gemfile.lock wurde zuletzt in Gemfile erzeugt/aktualisiert gegeben, da die Gesamtversion Beschränkungen angegeben. Wie Sie aufgelistet haben, ist kein Versionsbereich für sass selbst angegeben, aber andere Edelsteine ​​können weitere Einschränkungen auferlegen, wenn sie sass als Abhängigkeit haben.

Outright Ignorieren Gemfile.lock ist keine gute Idee, da unter normalen Umständen die Edelstein-Versionen angegeben werden, die zuletzt bekannt waren, noch mit der Anwendung verwendbar zu sein.

+0

Sind Sie sicher, dass die Installation des Pakets ausreichend ist? Was passiert zum Beispiel, wenn mehrere Versionen desselben Edelsteins installiert sind (wie es oft der Fall ist)? Ich dachte, das ist, wofür "Bundler execute" war. – Dty

+0

Unabhängig davon, ob die Datei "Gemfile.lock" generiert wurde, enthält sie nach der Auflösung der allgemeinen Einschränkungen nur eine Version für jedes angegebene Juwel. 'bundle install' ist für die Installation und' bundle exec' für die Ausführung. – prusswan

+0

Ah ok, ich denke, du antwortest auf die ursprüngliche Frage des Fragestellers "Wie installiere ich Edelsteine?". Ich beantworte, was ich denke, sein echtes Problem ist. – Dty

2

versuchen, dies ..

bundle install --deployment 

Mit über Bereitstellungsoption, bündeln dann von Gemfile.lock liest.

Was mehr ist, sind die Edelsteine ​​installiert Verzeichnis Verkäufer/Bündel, mit dem Bündel Verzeichnis ist Auto erstellt.

Auch neue Verzeichnis .bundle direkt unter den Schienen Stammverzeichnis erstellt wird, und hat eine Datei config genannt, deren Inhalt wie folgt ...

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

die oben genannten Arbeiten für Sie Hoffnung.

Verwandte Themen