捆绑器何时更新宝石指向git repo的宝石?

rub*_*nce 4 ruby gem rubygems bundler ruby-on-rails-3

我试图将3 Rails应用程序的常用功能移动到gem中.我创建了gem,在本地测试它,并将移动到私有存储库.

所以,现在我担心如果我在gem中的代码有变化,如何处理大小写.我是否需要更改gem的版本,如果我想更新gem bundle update mygem,或者Bundler会在执行时检测git repo的提交哈希值的变化bundle update mygem

p.m*_*los 5

由于您Gemfile将在私有git存储库中引用您的gem,然后为了让您的应用程序在您的gem中获取任何新的更改,您需要这样做bundle update gemname.纯粹而简单.如果您不这样做,bundle将不会接收更改.

Bundler使用锁定在Gemfile.lock文件中的gem版本,以便在应用程序中启动/使用它.您的版本信息Gemfile.lock仅在您更新时才会更新bundle update.否则它被锁定(aka Gemfile.lock)并且正在使用任何被锁定的版本.

顺便说一句,在一个私人的Git仓库引用宝石可以有很多选择(:branch,:tag等等),但是这是无关紧要的.锁定将发生在什么地方.

我希望这个解释捆绑器如何工作.

  • 另请注意,对于开发,您可以在本地引用gem,因此无需推送gem更改,您只需编辑它即可.在[Gemfile文档](http://bundler.io/v1.3/gemfile.html)中查找`:path`选项. (2认同)

Tim*_*ore 5

每次进行更改时,您无需更改 gem 内的版本。使用 git gems 时,Gemfile.lock锁定提交哈希而不是版本号。您根本不需要指定版本。

当您运行bundle update mygem并且mygem是 git gem 时,它会将锁定的提交哈希更新为您指定的分支(如果master您未指定分支,则为最新的可用哈希)。