私はRailsアプリの依存関係を管理するためにバンドラーを使用し、次のように含まれるgitリポジトリでホストされたgemを持っています。
gem 'gem-name', :git => 'path/to/my/gem.git'
このgemを更新するには、bundle update
を実行しますが、Gemfileに記載されているすべてのgemも更新します。それでは、特定のgemを1つだけ更新するコマンドは何ですか?
ここ の違いについての良い説明を見つけることができます
gemと依存関係の両方を更新します:
bundle update gem-name
または
gemのみを更新します:
bundle update --source gem-name
考えられる副作用のいくつかのニースの例とともに。
@Timの答えが示すように、Bundler 1.14の時点で、公式にサポートされている方法はbundle update --conservative gem-name
です。
これを行う方法は、次のコマンドを実行することです。
bundle update --source gem-name
コマンドラインでgem名を指定するだけです。
bundle update gem-name
Bundlerの新しいバージョン(> = 1.14)では次のように見えます:
bundle update --conservative gem-name
bundle update gem-name [--major|--patch|--minor]
これは依存関係でも機能します。
私は長い間bundle update --source
を使ってきましたが、うまくいかないシナリオがあります。幸いなことに、この欠点を修正することを目的とした bundler-patch
というgemがあります。
また、bundler-patch
の使用方法とbundle update --source
が一貫して機能しない理由について、短い ブログ投稿 を書きました。また、--source
オプションの機能について詳しく説明しているchrismoによる a post も確認してください。
bundler update --source gem-name
はGemfile.lockのリビジョンハッシュを更新します。これは、そのgitブランチ(デフォルトではマスター)の最後のコミットハッシュと比較できます。
GIT remote: [email protected]:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954
github.com/organization/repo-name/commits/c810f4a2
で見つけることができます(URLに8文字の短縮ハッシュを使用しました)