2017-04-22 2 views
4

私はちょうどレール上のルビーを使い始めています。チュートリアルに従うと、特定の宝石がどのように集められてGemfileに置かれたかについての説明はありません。私はちょうどそれらをコピーして貼り付けて、それらを私のGemfileに入れてバンドルインストールを実行しています。宝石があるバージョンのレールと互換性があることを知るにはどうすればよいですか?

特定のバージョンのgemとその依存関係をダウンロードする方法と、使用しているバージョンのバージョンと互換性があることを確認する方法はありますか?あなたのgemfileで

答えて

0

レール4と5については、hereを確認できます。もし宝石が準備されているかどうか。

gem 'gemname'と書いた場合、バンドルインストールを実行すると、Railsは自動的に最適な最新バージョンのgemをインストールします。宝石のバージョンを指定することは、他の答えに言及しています。

特定のバージョンのルビーまたはレールまたは任意の依存関係が宝石に必要な場合。そして、gemとgemfileのgemspecファイルで指定されています。

バンドルインストール中に何か問題が発生した場合でも、gemspecまたはgemfileのgemfileをクロスチェックすることができます。

+0

このプロジェクトは2年間更新されていません。いいアイデアだったけど、非難されていると思う – Mauro

0

次のようにあなたが宝石を一覧表示することができます:

をちょうどバージョン

gem 'gemname', '1.0.0' # or whatever version you want to specify 
を追加し、特定のバージョンをロードするにはアウト

gem 'gemname' 

をバージョンを残す最新の安定版をロードするには

特定のバージョンなどを読み込むには、サブバージョンが最も高いものはどれですか

gem 'gemname', '~> 1.0.0' # this will load version 1.0.x with x being the highest sub-version. 
gem 'gemname', '~> 1.0' # will load version 1.x 
gem 'gemname', '~> 1.3' # will load version 1.3 or higher but less than 2.0 

gemfileの中のgemのバージョンは、バンドルの更新を実行してリストされた方法(上記)に基づいて更新できます。

バージョンがあなたのRailsバージョンと互換性があるかどうかを知るには、私は一般的に最新の主要なRailsバージョンのリリース日と比較してrubygems.orgのリリース日を見ます。 2013年6月から2016年6月の間にリリースされた宝石は、Rails 4をターゲットにしている可能性が高いでしょう。Rails 5(2016年6月にリリースされました)では動作するかもしれません。私は、Rails 4で動作するほとんどの宝石はRails 5で動作し、Rails 5は特定のgem互換性に関する問題が既に文書化されていることを十分に示しています。 2013年6月よりも前のリリース日の宝石(Rails 3以前のもの)は避けてください。

2

Bundlerは、Gemのバージョンを指定しないと、現在のRailsのバージョンに応じてどのバージョンをインストールするかを決定します。通常、Bundlerは指定したバージョンをインストールできない場合にも警告します。

gem 'gemname' 

これは、Railsバージョンと互換性のあるバージョンをインストールします。

gem 'gemname', '1.5' 

これは、現在のRailsバージョンをサポートしている場合にのみバージョン1.5をインストールします。

gem 'gemname', '>=1.0' 

これは、使用可能で互換性がある場合は、バージョン1.0以上をインストールします。

(いくつかの宝石がMailchimpの宝石のようなことを行う)を使用すると、特定のバージョン(2.2)をインストールする必要がありますが、バージョン3.0は、あなたのコードを壊すことがわかっている場合は、最小バージョンおよび最大バージョンを指定することができます

gem 'gemname', '>= 2.2.0', '< 3.0' 

それは、このためのショートカットがあり、多かれ少なかれ一般的ですので:

gem 'gemname', '~> 2.2' 

「〜>」3.0よりも小さい任意のバージョンと一致します。それはbundlerに3.0に達することのない2.Xだけをインストールするように指示します。

インストールするすべての宝石は、あなたのRailsバージョンと互換性のあるバージョンを教えてくれます。通常、最小バージョン番号が表示されます。例えば、ブートストラップの宝石:あなたがサイトを見れば

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 >= 4 

それはあなたが少なくとも必要があることを意味しますが、常に最新バージョンをインストールすることができますので、それは最低限のRailsのバージョンを言及していませんRails 4.0。

+0

"Bundlerは、Gemバージョンを指定しないと現在のRailsバージョンに応じてどのバージョンをインストールするかを判断します。"私はこれを認識していなかったので、すばやくGoogleの検索を行い、何も見つかりませんでした...確かに私はすべての情報源を捜索しませんでした。 Bundlerがどのような宝石のバージョンがどのバージョンのレールと揃うのかを知る方法へのリンクはありますか? –

+0

私が見る通り、レールはgemspecファイルの中に依存関係として存在します。 rubygemsにリストされていないgemfileのgemfile(もしあれば)に入っているかもしれないので、Gemfileのgithubリポジトリにアクセスしてgemfileをチェックしなければなりません。これは、宝石所有者がgemspecまたはgemfileに柵のバージョン制限を記載していない可能性があるので、宝石がレール版でも動作するという保証はありません。しかし、主要な宝石(例えば、工作機械、紙クリップ)では、これはおそらくかなり信頼できるものです。 –

+0

こんにちはSteve Carey、Bundlerは自分のウェブサイトを持っています。 http://bundler.io/ Bundlerの仕事は、すべての宝石のバージョンが一致するように一致させることです。 –

関連する問題