Badam aplikację railsową - na serwerze produkcyjnym są zainstalowane dwie wersje określonego klejnotu. Jak mogę sprawdzić, której wersji używa aplikacja prod?
ruby-on-rails
rubygems
Steve Brewer
źródło
źródło
Odpowiedzi:
W Rails 3 i Rails 4 użyj
bundle show
W Railsach 2
rake gems
wypisze jakie klejnoty, zależności i wersje są zainstalowane, zamrożone itp.źródło
bundle show | grep gem_name
, na przykład dla kompasu:bundle show | grep compass
Jeśli korzystasz z pakietu, możesz pobrać wersję z
źródło
bundle info [gemname]
zamiast tego.Znalezienie i posortowanie tych informacji zajęło mi więcej czasu niż oczekiwano, dlatego chciałem umieścić je tutaj w jednym miejscu, aby inni mogli je przeglądać. Chciałem też trochę to wyjaśnić w przypadku Rails 3:
script / about został zastąpiony przez
rake about
Szczegóły tutaj . Jeśli jesteś zainteresowany listą wszystkich zmian w linii poleceń dla Rails 3, można je znaleźć tutaj .rake gems
nie działa w Railsach 3. Zamiast tego powinieneś użyćbundle show
Na przykład możesz zapisać wszystkie wersje swoich klejnotów do pliku do przeglądania za pomocą:
gem list > all_gems.txt
i możesz zobaczyć, jakich wersji używa Twoja aplikacja Rails:
bundle show > project_gems.txt
Używając edytora, takiego jak Vim, możesz łatwo użyć vimdiff, aby zobaczyć zmiany
źródło
Prawdopodobnie istnieje bardziej bezpośredni sposób, aby się tego dowiedzieć, ale jeśli załadujesz konsolę i potrzebujesz określonej wersji, takiej jak ta:
Powie Ci, która wersja jest już aktywowana:
źródło
W terminalu
lub
Na przykład:
źródło
Jest też lista
Gemfile.lock
, znajdująca się w katalogu głównym Twojej aplikacji.Z tego powodu pomijam
Gemfile.lock
moje.gitignore
. To uratowało mnie więcej niż raz, kiedy zapomniałem podać wersję klejnotu w programieGemFile
, a klejnot został zaktualizowany o przełomowe zmiany.źródło
Spróbuj użyć
script/about
. Twójconfig/environment.rb
również ma informacje na ten temat.W Twoim
config/environment.rb
możesz określić, której wersji konkretnejgem
aplikacji ma używać. Jeśli jednak masz wiele wersji programugem
zainstalowanego na swoim komputerze i nie określisz wersji, najnowsza wersja tego klejnotu będzie używana przez aplikację.źródło
Pokaże wszystkie pasujące kamienie, np. Jeśli ktoś to zrobi
Wtedy wynik będzie następujący
źródło
script/about
powie ci, jakich wersji podstawowych Rails i Rack Gems używasz, ale nic więcej. Idealnie, jeśli zajrzysz doconfig/environment.rb
środka, powinna istnieć sekcja, która wygląda następująco:Przy odrobinie szczęścia autor aplikacji umieści tam wszystkie wymagane klejnoty i wersje. Jednak wersje są opcjonalne w tym pliku i ostatecznie nic nie powstrzymuje niedoświadczonego programisty przed po prostu uderzeniem
require 'rubygems'; require 'some_random_thing'
w górę dowolnego pliku.Jeśli widzisz, że klejnot jest wymagany, ale nie określono wersji, możesz wpisać,
gem list
aby zobaczyć wszystkie wersje wszystkich klejnotów w systemie. Domyślnie będzie korzystać z najnowszego dostępnego.źródło
Prawdopodobnie możesz użyć:
źródło
gem which gem_name
bundle show gemname Tj. dla urządzenia, które musisz napisać jak
i wydrukuje aktualną wersję klejnotu.
źródło
spróbuj tego dla lokalnego klejnotu:
Jeśli używasz pakietu:
źródło
W nowszej wersji używany
bundle show gem_name
źródło
Jeśli używasz bundlera, możesz pobrać wersję za pomocą:
źródło
W Gemfile powinna być odpowiedź:
źródło
Gemfile
nie zawsze jawnie deklaruje numer wersji.