web-dev-qa-db-ja.com

1つのgemをbundlerで更新する

私はRailsアプリの依存関係を管理するためにバンドラーを使用し、次のように含まれるgitリポジトリでホストされたgemを持っています。

gem 'gem-name', :git => 'path/to/my/gem.git'

このgemを更新するには、bundle updateを実行しますが、Gemfileに記載されているすべてのgemも更新します。それでは、特定のgemを1つだけ更新するコマンドは何ですか?

206
sailor

ここ の違いについての良い説明を見つけることができます

gemと依存関係の両方を更新します:

bundle update gem-name 

または

gemのみを更新します:

bundle update --source gem-name

考えられる副作用のいくつかのニースの例とともに。

更新

@Timの答えが示すように、Bundler 1.14の時点で、公式にサポートされている方法はbundle update --conservative gem-nameです。

311
mseebacher

これを行う方法は、次のコマンドを実行することです。

bundle update --source gem-name
182
dukz

コマンドラインでgem名を指定するだけです。

bundle update gem-name
23
Brandan

Bundlerの新しいバージョン(> = 1.14)では次のように見えます:

bundle update --conservative gem-name
20
Tim

bundle update gem-name [--major|--patch|--minor]

これは依存関係でも機能します。

4
Niko

私は長い間bundle update --sourceを使ってきましたが、うまくいかないシナリオがあります。幸いなことに、この欠点を修正することを目的とした bundler-patch というgemがあります。

また、bundler-patchの使用方法とbundle update --sourceが一貫して機能しない理由について、短い ブログ投稿 を書きました。また、--sourceオプションの機能について詳しく説明しているchrismoによる a post も確認してください。

2
Kitto

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文字の短縮ハッシュを使用しました)

0
shushugah