目的別 bundle outdated コマンド早見表
| 知りたいこと | コマンド | 概要 |
|---|---|---|
| 全部知りたい | bundle outdated |
Gemfile明示 + 推移依存も含む。
Gemfile制約外の最新リリースも見るため、情報過多になりやすい。 |
| 自分が明示しているGemの最新を見たい | bundle outdated --only-explicit |
自分がGemfileで明示しているGemに絞る。
ただし、Gemfileのバージョン制約は無視して最新リリースを表示する。 |
| 制約内で上げられる候補を全部見たい | bundle outdated --strict |
Gemfile制約内で上げられる候補を表示。
ただし、明示Gemだけでなく推移依存も含む。 |
| 自分が明示しているGemのうち、 制約内で上げられる残りを見たい |
bundle outdated --strict --only-explicit |
Gemfileで明示しているGemについて、Gemfile制約内で上げられる残りだけを表示。
日々の確認に一番向いている。 |
--only-explicit は、Gemfileに自分たちで直接書いたGemだけを見るためのオプションです。
例えば、Gemfileに以下のように書いているとします。
gem 'rails'
gem 'rspec-rails'
gem 'pg'
この3つが「明示されたGem(Explicit Gems)」です。 しかし、実際に bundle install をすると、Railsを動かすために裏でたくさんのGemがインストールされます。
actionpackactiverecordactivesupportracknokogiri
…など
これらはGemfileには直接書いていないものの、他のGemが必要としているために入っている「推移依存(Transitive Dependencies)」のGemです。
オプションなしの bundle outdated を実行すると、こうした推移依存も含めて大量のリストが表示されてしまいます。--only-explicit を付けることで、「自分たちがGemfileで直接管理しているGem」だけに対象を絞り込むことができます。
--strict は、Gemfileに書かれているバージョン条件(制約)の範囲内で上げられるものだけを表示するオプションです。GemfileのRequirement(制約)とは、「このGemはどのバージョン範囲を許すか」というルールのことです。書き方によって意味が大きく変わります。Bundler が解決できる範囲で、
その gem の新しい版を入れたときに、その gemspec の依存条件も含めて成立するか
を見ます。
バージョン条件を書いていない場合、Bundlerは基本的に「使える最新バージョンまで候補にしてよい」と判断します。
オプションなしの bundle outdated はこの制約を無視して「とにかく世の中にある最新バージョン」を教えてくれますが、--strict を付けることで「今のGemfileのルールのまま、安全にアップデートできる余地があるか」を確認することができます。