bundlerで宝石を1つだけ更新する


233

私はbundlerを使用してRailsアプリの依存関係を管理し、次のように含まれているgitリポジトリでgemをホストしています。

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

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

回答:


354

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

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

bundle update gem-name 

または

gemのみを更新します。

bundle update --source gem-name

可能な副作用のいくつかの素晴らしい例と一緒に。

更新

@Timの答えが言うように、Bundler 1.14以降、これを公式にサポートする方法はを使用することbundle update --conservative gem-nameです。


19
「gemと依存関係の更新」とは、依存関係でありたくない場合にRails自体を更新することを意味します。--sourceは、パラメーターとして指定されたgemのみを更新します。そのため、ほとんどの状況でより優れています。
1.44mb 2015

バージョンの指定方法は?
Oshan Wisumperuma

1
@OshanWisumperumaこれらのバンドルコマンドを実行する前に、GemfileまたはGemfile.lockでバージョンを指定してください
Harry Wood

185

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

bundle update --source gem-name

3
これはまさに私が必要としたものであり、私にはプライベートgemがあり、プライベートgemに変更を加えた後、依存関係を更新せずにgem自体を更新するだけで済みます。
私はカエルのドラゴンです。

30

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

bundle update --conservative gem-name

注:このコマンドは、依存関係のない1つのgemを更新します
mmike

24

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

bundle update gem-name

1
奇妙な。それがそうbundle help updateすることです。どのバージョンのバンドラーを使用していますか?
ブランダン2012年

40
bundle update gem-namegemと「その依存関係のいずれか」を更新します。
ヤカ

5

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

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


1
特定のバージョンに更新する方法はありますか?--major--minor、および--patchフラグは自動的に最新の可能なバージョンにアップグレードします。
user2490003

2

私はbundle update --source長い間自分自身を使用してきましたが、それが機能しないシナリオがあります。幸いなことに、bundler-patchこの欠点を修正することを目的とするGemがあります。

また、使用方法と、なぜうまく動かないのかについての短いブログ投稿も書きました。また、オプションの機能について詳しく説明しているchrismoの投稿も必ずチェックしてください。bundler-patchbundle update --source--source


0

bundler update --source gem-name Gemfile.lockのリビジョンハッシュを更新します。これは、そのgitブランチ(デフォルトではマスター)の最後のコミットハッシュと比較できます。

GIT remote: git@github.com:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

で見つけることができますgithub.com/organization/repo-name/commits/c810f4a2(私はURLに省略形の8文字のコミットハッシュを使用しました)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.