web-dev-qa-db-ja.com

Railsアプリが使用しているgemのバージョンを確認する方法

Railsアプリ-prodサーバーには特定のgemの2つのバージョンがインストールされていますが、prodアプリが使用しているバージョンを確認するにはどうすればよいですか?

113
Steve Brewer

Rails 3 and Rails 4、use bundle show

In Rails 2、rake gemsは、どのgem、依存関係、およびバージョンがインストールされているか、フリーズされているかなどを出力します。

165
BJ Clark

この情報を見つけて分類するのに予想以上に時間がかかったので、他の人が見られるように、ここに投稿したかったのです。 Rails 3:

  • script/aboutはrake aboutに置き換えられました。詳細は here です。 Rails 3のすべてのコマンドラインの変更のリストに興味がある場合は、それらを見つけることができます here

  • rake gemsはRails 3.では動作しません。代わりにbundle showを使用する必要があります

例として、次のコマンドを使用して、表示するgemのすべてのバージョンをファイルに保存できます。

gem list > all_gems.txt

また、Railsアプリが使用しているバージョンを確認できます。

bundle show > project_gems.txt

Vimのようなエディターを使用すると、vimdiffを使用して簡単に変更を確認できます。

37
SnapShot

バンドラーを使用する場合は、バージョンを次から取得できます。

bundle show [gemname]
37
Stina

これを見つけるためのより直接的な方法はおそらくありますが、コンソールをロードし、次のような特定のバージョンが必要な場合:

gem 'RedCloth', '3.0.4'

すでにアクティブ化されているバージョンがわかります。

=> Gem::LoadError: can't activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2
5
gtd

アプリのルートディレクトリにあるGemfile.lockにもリストがあります。

このため、Gemfile.lock.gitignoreから除外します。これにより、GemFileでgemバージョンを指定するのを忘れたときに何度も保存され、重大な変更が加えられたgemが更新されました。

5
SooDesuNe

ターミナルで

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

または

gem list | grep [gem-name]

[gem-name]は、探しているgem名として置き換える必要があります。

5
Danila

script/aboutを使用してみてください。 config/environment.rbにも情報があります。

config/environment.rbで、アプリケーションが使用する特定のgemのバージョンを指定できます。ただし、マシンにgemの複数のバージョンがインストールされており、バージョンを指定しない場合、そのgemの最新バージョンがアプリケーションによって使用されます。

4
Waseem
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)
3
ImranNaqvi

script/aboutは、使用しているコアのバージョンRailsおよびRack gemsを示しますが、それ以外は何も表示しません。理想的には、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"

運が良ければ、アプリの作成者は必要なgemとバージョンをそこに含めます。ただし、このファイルではバージョンはオプションであり、最終的には、経験の浅い開発者がrequire 'rubygems'; require 'some_random_thing'任意のファイルの先頭。

Gemが必要であることがわかっているが、バージョンが指定されていない場合は、gem listシステム上のすべてのgemのすべてのバージョンを表示します。デフォルトでは、利用可能な最新のものを使用します。

2
John Hyland
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
1
JAR.JAR.beans

bundle show gemname I.e工夫するためには、次のように書く必要があります

bundle show devise

そして、現在のgemバージョンを出力します。

1
Bilal A.Awan

地元の宝石のためにこれを試してください:

gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'

バンドルを使用する場合:

bundle exec gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'
0
Sunil shakya