2009-07-17 12 views
2

Ich habe kürzlich ein Rails-Projekt aktualisiert, an dem ich arbeite, von 2.0.5 bis 2.3.2. Ich bemerkte, dass es eine lokale Kopie der 2.0.5 Rails-Dateien in Vendor/Rails gab und ich fragte mich, ob ich eine lokale Kopie der 2.3.2 Rails-Dateien dort hineinlegen sollte oder sie einfach weglassen sollte? Was ist eine bessere Praxis?Lokale Kopie von Rails in einer Schienenanwendung

Antwort

3

Ja. Die Kopie von Rails, die in vendor/rails sitzt, wird tatsächlich vor den Rails-Gems verwendet, die systemweit installiert sind. Mit anderen Worten, obwohl Sie Ihre Rails-Installation aktualisiert haben, läuft Ihre App tatsächlich noch unter Version 2.0.5.

Das Verzeichnis vendor/rails existiert, damit Sie Ihre App auf eine bestimmte Version von Rails "einfrieren" können, wodurch sie weniger anfällig für Änderungen in der Konfiguration der Maschine ist, auf der sie läuft. Dies ist so nützlich, dass es eine automatisierte Möglichkeit gibt, das Verzeichnis zu verwalten. Um die vorhandene Version von Rails zu löschen in vendor/rails sitzen, gehen Sie auf die Wurzel Ihrer Rails Projektverzeichnis und wie folgt vorgehen:

rake rails:unfreeze 

installieren Sie die aktuellste Rails Edelsteine ​​auf dem System in vendor/rails, tun:

rake rails:freeze:gems 

Es gibt ein paar andere Dinge, die Sie mit vendor/rails tun können. Eine vollständige Liste der Befehle finden Sie unter rake -T.

P.S. Wenn Sie jemals jemanden darüber reden hören, dass seine Rails-Installation "vendored" ist, dann meinen sie das.

+0

Ja, ich habe bemerkt, dass es die lokale Kopie verwendet, also habe ich einfach die Schienen dir vom Anbieter entfernt. Danke für die Antwort. – AdamB

1

In der Zwischenzeit haben sich die Dinge ein wenig verändert.

rake rails:freeze 

und

rake rails:unfreeze 

sind veraltet. Stattdessen sollten Sie verwenden:

bundle install --path vendor/bundle 

und

bundle install --system 

zu wechseln.

Verwandte Themen