bundle outdated –strict –only-explicit

目次

目的別 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がインストールされます。

  • actionpack
  • activerecord
  • activesupport
  • rack
  • nokogiri

…など

これらはGemfileには直接書いていないものの、他のGemが必要としているために入っている「推移依存(Transitive Dependencies)」のGemです。

オプションなしの bundle outdated を実行すると、こうした推移依存も含めて大量のリストが表示されてしまいます。--only-explicit を付けることで、「自分たちがGemfileで直接管理しているGem」だけに対象を絞り込むことができます。

--strict は、Gemfileに書かれているバージョン条件(制約)の範囲内で上げられるものだけを表示するオプションです。GemfileのRequirement(制約)とは、「このGemはどのバージョン範囲を許すか」というルールのことです。書き方によって意味が大きく変わります。Bundler が解決できる範囲で、

その gem の新しい版を入れたときに、その gemspec の依存条件も含めて成立するか

を見ます。

バージョン条件を書いていない場合、Bundlerは基本的に「使える最新バージョンまで候補にしてよい」と判断します。

オプションなしの bundle outdated はこの制約を無視して「とにかく世の中にある最新バージョン」を教えてくれますが、--strict を付けることで「今のGemfileのルールのまま、安全にアップデートできる余地があるか」を確認することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次