Ich untersuche eine Rails-App. Auf dem Prod-Server sind zwei Versionen eines bestimmten Gems installiert. Wie kann ich feststellen, welche Version die Prod-App verwendet?
ruby-on-rails
rubygems
Steve Brewer
quelle
quelle
Antworten:
Verwenden Sie in Schienen 3 und Schienen 4
bundle show
Druckt in Rails 2
rake gems
aus, welche Edelsteine, Abhängigkeiten und Versionen installiert, eingefroren usw. sind.quelle
bundle show | grep gem_name
beispielsweise für den Kompass:bundle show | grep compass
Wenn Sie Bundler verwenden, können Sie die Version von erhalten
quelle
bundle info [gemname]
stattdessen.Ich habe länger als erwartet gebraucht, um diese Informationen zu finden und zu sortieren, daher wollte ich sie hier an einem Ort veröffentlichen, damit andere sie sehen können. Ich wollte dies auch ein wenig für Rails 3 klarstellen:
script / about wurde ersetzt durch
rake about
Die Details finden Sie hier . Wenn Sie interessiert sind, finden Sie hier eine Liste aller Befehlszeilenänderungen für Rails 3 .rake gems
funktioniert nicht in Rails 3. Stattdessen sollten Sie verwendenbundle show
Beispielsweise können Sie alle Versionen Ihrer Edelsteine in einer Datei speichern, um sie anzuzeigen:
gem list > all_gems.txt
und Sie können sehen, mit welchen Versionen Ihre Rails-App verwendet:
bundle show > project_gems.txt
Mit einem Editor wie Vim können Sie die Änderungen ganz einfach mit vimdiff anzeigen
quelle
Es gibt wahrscheinlich einen direkteren Weg, dies herauszufinden, aber wenn Sie eine Konsole laden und eine bestimmte Version wie diese benötigen:
Hier erfahren Sie, welche Version bereits aktiviert ist:
quelle
Im Terminal
oder
Beispielsweise:
quelle
Es gibt auch eine Liste im
Gemfile.lock
Stammverzeichnis Ihrer App.Aus diesem Grund lasse
Gemfile.lock
ich meine aus.gitignore
. Dies hat mich mehr als einmal gerettet, als ich vergessen habe, die Edelsteinversion in anzugebenGemFile
, und ein Edelstein mit aktuellen Änderungen aktualisiert wurde.quelle
Versuchen Sie es mit
script/about
. Sie habenconfig/environment.rb
auch Informationen darüber.In Ihrem können
config/environment.rb
Sie angeben, welche Version einer bestimmtengem
Anwendung verwendet werden soll. Wenn Sie jedoch mehrere Versionen einesgem
auf Ihrem Computer installiert haben und die Version nicht angeben, wird die neueste Version dieses Gems von der Anwendung verwendet.quelle
Es werden alle passenden Edelsteine angezeigt, z. B. wenn jemand dies tut
Dann wird die Ausgabe wie folgt sein
quelle
script/about
Hier erfahren Sie, welche Versionen der wichtigsten Rails- und Rack-Edelsteine Sie verwenden, aber sonst nichts. Wenn Sie hineinschauenconfig/environment.rb
, sollte es im Idealfall einen Abschnitt geben, der so aussieht:Mit etwas Glück hat der Autor der App alle erforderlichen Edelsteine und Versionen dort aufgenommen. Die Versionen in dieser Datei sind jedoch optional, und letztendlich hindert nichts einen unerfahrenen Entwickler daran, einfach einen
require 'rubygems'; require 'some_random_thing'
oben auf eine bestimmte Datei zu setzen.Wenn Sie sehen, dass ein Edelstein erforderlich ist, aber keine Version angegeben ist, können Sie eingeben
gem list
, um alle Versionen aller Edelsteine auf dem System anzuzeigen. Standardmäßig wird die neueste verfügbare Version verwendet.quelle
Ist wahrscheinlich was Sie verwenden können:
quelle
gem which gem_name
Bundle Show Gemname Ie für Gerät, das Sie gerne schreiben müssen
und es wird die aktuelle Edelsteinversion ausgedruckt.
quelle
Versuchen Sie dieses für lokales Juwel:
Wenn Sie Bundle verwenden:
quelle
In neuerer Version verwendet
bundle show gem_name
quelle
Wenn Sie Bundler verwenden, können Sie die Version mit folgender Adresse erhalten:
quelle
In Gemfile sollte es die Antwort geben:
quelle
Gemfile
wird nicht immer explizit eine Versionsnummer deklarieren.