gem が Rails のバージョンと互換性があることを確認するにはどうすればよいですか?
概要
私は Ruby on Rails を始めたばかりですが、チュートリアルに従っていると、特定の gem がどのように収集されて Gemfile に配置されたのかについての説明がありません。それらをコピーして貼り付け、Gemfile に入れて、バンドルのインストールを実行しています。
gem の特定のバージョンとその依存関係をダウンロードし、使用している Rail のバージョンと互換性があることを確認するにはどうすればよいですか?
解決策
Gem バージョンを指定しない場合、Bundler は現在の Rails バージョンに応じてインストールするバージョンを判断します。通常、Bundler は、指定したバージョンをインストールできない場合にも警告を出します。
gem 'gemname'
これにより、Rails のバージョンと互換性のあるバージョンがインストールされます。
gem 'gemname', '1.5'
これにより、現在の Rails バージョンがサポートされている場合にのみ、バージョン 1.5 がインストールされます。
gem 'gemname', '>=1.0'
これにより、バージョン 1.0 以降が利用可能で互換性がある場合にはインストールされます。
特定のバージョン (2.2) をインストールしたいが、バージョン 3.0 ではコードが破損することがわかっている場合 (Mailchimp gem など一部の gem では破損する)、最小バージョンと最大バージョンを指定できます。
gem 'gemname', '>= 2.2.0', '< 3.0'
これは多かれ少なかれ一般的であるため、これに対するショートカットがあります。
gem 'gemname', '~> 2.2'
「~>」は 3.0 より小さいバージョンに一致します。これはバンドラーに 2.X のみをインストールし、3.0 には到達しないように指示します。
インストールするすべての gem によって、どのバージョンが Rails のバージョンと互換性があるかがわかります。通常、最小バージョン番号が表示されます。たとえば、boostrap gem は次のようになります。
https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://rubygems.org/gems/bootstrap/versions/4.0.0.alpha3.1
サイトを見ると依存関係がわかります。 Rails の最小バージョンについては言及されていないため、常に最新バージョンをインストールできます。
RUNTIME DEPENDENCIES (2):
autoprefixer-rails >= 6.0.3
sass >= 3.4.19
DEVELOPMENT DEPENDENCIES (13):
actionpack >= 4.1.5
activesupport >= 4.1.5
capybara >= 2.6.0
compass ~> 1.0.3
jquery-rails >= 3.1.0
json >= 1.8.1
minitest ~> 5.8.0
minitest-reporters ~> 1.0.5
poltergeist >= 0
slim-rails >= 0
sprockets-rails >= 2.3.2
term-ansicolor >= 0
uglifier >= 0
次のように依存関係で Rails バージョンを指定する場合:
rails >= 4
つまり、少なくとも Rails 4.0 が必要です。