Railsアプリを調査しています-prodサーバーには特定のgemの2つのバージョンがインストールされています。prodアプリが使用しているバージョンを確認するにはどうすればよいですか?
Railsアプリを調査しています-prodサーバーには特定のgemの2つのバージョンがインストールされています。prodアプリが使用しているバージョンを確認するにはどうすればよいですか?
回答:
Rails 3およびRails 4では、 bundle show
Rails 2では、rake gems
インストール、フリーズなどされているgem、依存関係、バージョンを出力します。
bundle show | grep gem_name
コンパスのための、例:bundle show | grep compass
bundlerを使用している場合は、次の場所からバージョンを取得できます
bundle show [gemname]
bundle info [gemname]
代わりに使用してください。
この情報を見つけて並べ替えるのに予想以上に時間がかかったので、他の人が見られるように1つの場所に投稿したいと思いました。Rails 3についても、これを少し明確にしたかったのです。
script / aboutはに置き換えられましたrake about
。詳細はこちらです。Rails 3のすべてのコマンドラインの変更点の一覧が必要な場合は、こちらで確認できます。
rake gems
Rails 3では機能しません。代わりに bundle show
例として、gemのすべてのバージョンをファイルに保存して、表示することができます。
gem list > all_gems.txt
Railsアプリが使用しているバージョンを確認できます。
bundle show > project_gems.txt
Vimなどのエディターを使用すると、vimdiffを簡単に使用して変更を確認できます
script/about
使用しているコアのRailsおよびRack gemのバージョンがわかりますが、他のバージョンはわかりません。理想的には、を見ると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が必要であるが、バージョンが指定されていない場合は、入力gem list
して、システム上のすべてのgemのすべてのバージョンを表示できます。デフォルトでは、入手可能な最新のものを使用します。
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
gem which gem_name