私が開発したgemをホストしているプライベートgitサーバーがあります。宝石はいくつかのコミットを取得しましたが、バージョンは実際には変更されませんでした。
バージョンが変更されていない場合でも、バンドラーにgemを更新させるにはどうすればよいですか?
「bundlerupdatemygemname」を試しましたが、何も更新されませんでした。
ありがとう
これは機能しません-「強制」オプションはありません-.gemspecファイルを変更し、バージョン番号を増やしてから、gem build ...
、bundle install
を実行する必要があります
Bundlerが、.gemspec
ファイルで導入されたgemからバージョン番号を読み取れることが重要です。 bundlerやgem update
だけでなく、.gemspecファイルのバージョン番号を更新し忘れた場合にも混乱を招きます。最終的にはgemファイルが横になってしまい、自分がどのバージョンであるかを知ることができなくなります。どちらが新しいですか? (もちろん、md5-sumを使用することもできますが、それはここでのポイントの脇にあります)。
最善の方法は、.gemspecファイルの誤りを修正し、gemを再リリースすることです。
利用可能なオプションについては、バンドラーのソースコードを確認してください。
例:bundler-1.0.15/lib/bundler/cli.rb
(desc "install"
を検索してください)
:ref
オプションを使用して、githashrefをGemfileに直接配置することもできます。
gem 'foo', :git => 'git://github.com/foobar/foo.git', :branch => '0.9-beta', :ref => '9af382ed'
上記のgemを制御できない場合に特に役立ち、重大な変更があった場合にbundlerが新しいバージョンを提供しないようにします。
まず第一に、それをしないでください。 gemを変更する場合は、バージョン番号を更新する必要があります。そうでなければ、それはただ混乱しています。
ただし、本当にこれを実行したい場合は、最初に宝石を取り除く巨大なハンマーを適用できます。
$ gem uninstall foo
$ bundle update
バージョン1.11からbundle install
は--force
オプションがインストールされている場合でも、すべてのgemを再ダウンロードします。
これは上記の正確な質問には答えませんが、Googleで「BundlerでGemを強制的に更新する方法」を検索していたところ、この問題が発生しました。
Gemをrubygems.orgに強制的に更新しようとしているのではなく、ローカルシステムのバンドルパスにインストールされているgemを再インストールしようとしています。具体的には、ネイティブ拡張子(nokogiri)を使用してgemを再インストールしようとしています。
プロジェクトから削除した方法は次のとおりです。 --path
がvendor/bundle
であり、プロジェクトのルートにいると仮定して、次を実行します。
find vendor/bundle/Ruby/2.0.0 -name "*nokogiri*" -depth 2
これらのファイル/ディレクトリがnokogiriに固有であることを確認してから、次のコマンドで削除します。
find vendor/bundle/Ruby/2.0.0 -name "*nokogiri*" -depth 2 | xargs rm -rf
これで、通常どおりbundleinstallコマンドを実行できます。
bundle install --path vendor/bundle
注:もちろん、上の2.0.0
をRuby version。ls vendor/bundle/Ruby
に変更して、どのバージョンのバンドルがgemをインストールしたかを確認する必要があります。にとって。