Dom*_*let 20 git ruby-on-rails bundler
我有一个私人git托管我们开发的宝石.宝石有一些提交,但版本实际上没有改变.
即使版本没有更改,我如何强制捆绑器更新我的gem?
我尝试了"bundler update mygemname",但它没有更新任何内容.
谢谢
sbe*_*eam 25
你也可以使用:ref选项将git hashref放在Gemfile中
gem 'foo', :git => 'git://github.com/foobar/foo.git', :branch => '0.9-beta', :ref => '9af382ed'
Run Code Online (Sandbox Code Playgroud)
如果您无法控制所述gem,则特别有用,并且如果存在重大更改,则捆绑器不会为您提供更新版本.
jdl*_*jdl 15
首先,不要这样做.如果更改gem,则应更新其版本号.否则,这只是令人困惑.
但是,如果你真的想要这样做,你可以先用巨大的锤子去除你的宝石.
$ gem uninstall foo
$ bundle update
Run Code Online (Sandbox Code Playgroud)
Til*_*ilo 12
这将无法正常工作 - 没有"强制"选项 - 您必须修改.gemspec文件并增加版本号,然后执行gem build ...,并且bundle install
对于bundler来说,能够从gem中读取版本号是至关重要的,这是在.gemspec文件中引入的.gem update如果您忘记更新.gemspec文件中的版本号,它不仅会令人困惑,也会让人感到困惑.他们最终会有宝石文件,并且不能分辨出它们是哪个版本,例如哪一个更新?(当然你可以使用md5-sum,但这不是重点).
最好的办法是纠正.gemspec文件中的错误,然后重新发布gem.
检查bundler源代码以获取可用选项:
例如: bundler-1.0.15/lib/bundler/cli.rb
(搜索desc "install")
从版本1.11开始,bundle install只有一个--force选项可以重新下载每个gem,即使它们已经安装.
这并没有回答上面的确切问题,但我在谷歌搜索"如何强制更新捆绑包中的宝石",这就出现了.
我不是试图强制更新gem到rubygems.org,而是我试图重新安装一个安装在我本地系统上的bundle路径的gem.具体来说,我正在尝试重新安装带有原生扩展(nokogiri)的gem.
我如何从项目中删除它如下; 假设您--path是vendor/bundle并且您在项目的根目录中运行:
find vendor/bundle/ruby/2.0.0 -name "*nokogiri*" -depth 2
Run Code Online (Sandbox Code Playgroud)
验证这些文件/目录是否特定于nokogiri,然后使用以下命令删除它们:
find vendor/bundle/ruby/2.0.0 -name "*nokogiri*" -depth 2 | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)
现在您可以像往常一样运行bundle install命令:
bundle install --path vendor/bundle
Run Code Online (Sandbox Code Playgroud)
注意:您当然需要将2.0.0上面的内容更改为您的ruby版本.ls vendor/bundle/ruby查看哪个版本的捆绑包已经安装了宝石.