Как узнать, какую версию драгоценного камня использует приложение rails - PullRequest
113 голосов
/ 25 октября 2009

Я исследую приложение rails - на сервере prod установлены две версии определенного гема, как я могу узнать, какую версию использует приложение prod?

Ответы [ 13 ]

165 голосов
/ 26 октября 2009

В Rails 3 и Rails 4 используйте bundle show

В Rails 2 rake gems выведет, какие гемы, зависимости и версии установлены, заморожены и т. Д.

37 голосов
/ 29 ноября 2011

Мне потребовалось больше времени, чем ожидалось, чтобы найти и отсортировать эту информацию, поэтому я хотел разместить ее здесь в одном месте для просмотра другими. Я также хотел пояснить это немного для Rails 3:

  • script / about был заменен на rake about Подробности здесь . Если вас интересует список всех изменений командной строки для Rails 3, их можно найти здесь .

  • rake gems не работает в Rails 3. Вместо этого вы должны использовать bundle show

Например, вы можете сохранить все версии ваших драгоценных камней в файл для просмотра с помощью:

gem list > all_gems.txt

и вы можете видеть, с какими версиями ваше Rails-приложение использует:

bundle show > project_gems.txt

Используя редактор, такой как Vim, вы можете легко использовать vimdiff, чтобы увидеть изменения

37 голосов
/ 19 ноября 2011

Если вы используете bundler, то вы можете получить версию от

bundle show [gemname]
5 голосов
/ 26 января 2015

В терминале

bundle show [gem-name]
bundle show | grep [gem-name]

или

gem list | grep [gem-name]

[имя-драгоценного камня] следует заменить на имя драгоценного камня, которое вы будете искать.

5 голосов
/ 19 декабря 2012

В Gemfile.lock также есть список, расположенный в корневом каталоге вашего приложения.

По этой причине я оставляю Gemfile.lock из своего .gitignore. Это спасло меня не раз, когда я забыл указать версию драгоценного камня в GemFile, и драгоценный камень обновился с критическими изменениями.

5 голосов
/ 25 октября 2009

Вероятно, есть более прямой способ выяснить это, но если вы загрузите консоль и вам нужна конкретная версия, например, так:

gem 'RedCloth', '3.0.4'

Он скажет вам, какая версия уже активирована:

=> Gem::LoadError: can't activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2
4 голосов
/ 25 октября 2009

Попробуйте использовать script/about. Ваш config/environment.rb также имеет информацию об этом.

В вашем config/environment.rb вы можете указать, какую версию конкретного gem должно использовать приложение. Однако, если на вашем компьютере установлено несколько версий gem, и вы не указали версию, последняя версия этого гема будет использоваться приложением.

3 голосов
/ 07 октября 2015
gem list <gemname>

Он покажет все соответствующие драгоценные камни, например, если кто-то сделает

gem list rack

Тогда результат будет следующим:

*** LOCAL GEMS ***

rack (1.6.4)
rack-mount (0.6.14)
rack-test (0.6.3, 0.6.2, 0.5.7)
2 голосов
/ 26 октября 2009

script/about скажет вам, какие версии основных Rails и Rack гемов вы используете, но не что-нибудь еще. В идеале, если вы посмотрите в config/environment.rb, должен быть раздел, который выглядит следующим образом:

# Specify gems that this application depends on and have them installed with rake gems:install
# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "sqlite3-ruby", :lib => "sqlite3"
# config.gem "aws-s3", :lib => "aws/s3"

Если повезет, автор приложения включит туда все необходимые гемы и версии. Однако версии в этом файле являются необязательными, и в конечном итоге ничто не мешает неопытному разработчику просто щелкнуть require 'rubygems'; require 'some_random_thing' в верхней части любого данного файла.

Если вы видите, что требуется драгоценный камень, но версия не указана, вы можете набрать gem list, чтобы увидеть все версии всех драгоценных камней в системе. По умолчанию он будет использовать последнюю доступную версию.

1 голос
/ 24 ноября 2014
bundle exec gem which gem_name

Возможно, вы можете использовать:

$› bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...