質問

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

役に立ちましたか?

解決

Rails 3およびRails 4では、 bundle show

を使用します

Rails 2では、 rake gems は、インストールされている、凍結されている、gem、依存関係、バージョンなどを出力します。

他のヒント

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

bundle show [gemname]

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

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

  • rake gems はRails 3では機能しません。代わりに、 bundle show

  • を使用する必要があります。

例として、gemのすべてのバージョンをファイルに保存して表示することができます:

宝石リスト> all_gems.txt

そしてRailsアプリがどのバージョンで使用しているかを見ることができます:

バンドルショー> project_gems.txt

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

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

gem 'RedCloth', '3.0.4'

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

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

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

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

ターミナルで

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

または

gem list | grep [gem-name]

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

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

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

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)

script / about は、使用しているコアRails and 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'を叩くのを止めることはできません。特定のファイルの先頭に「some_random_thing」が必要です。

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

bundle exec gem which gem_name

おそらくあなたが使用できるものです:

<*>#8250; bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb

ローカルgemでこれを試してください:

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

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

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

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

bundle show devise

そして現在のgemバージョンを印刷します。

Gemfileには、答えがあるはずです:

gem 'rails', '4.0.0.rc1'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top