我正在使用geminabox运行我自己的gem服务器。这个宝石服务器托管了几个公共宝石的私人分支,以及我自己的宝石。我有一个Gemfile,其源代码如下:
source https://rubygems.org
source http://my/gem/server
当Bundler安装捆绑包时,我希望它始终使用我的gem服务器上可用的版本(如果它存在)并满足版本要求。我无法让这个工作。相反,捆绑器似乎从rubygems中提取,除非它找不到具有相同名称的gem。这可能是因为rubygems上的版本更高。但是,bundler的文档没有提到版本号。这是它描述源优先级的方式:
消息来源优先权
在尝试定位gem以满足gem要求时,bundler使用以下优先级顺序:明确附加到gem的源(使用:path或:git)
对于隐式gem(显式gems的依赖),否则声明任何git或path存储库。这导致捆绑器将来自Rails git存储库的ActiveSupport gem优先于rubygems.org中的gem 通过源指定的源,搜索Gemfile中的每个源从上次添加到第一个添加。
另外,我知道可以在Gemfile中明确列出每个gem的源代码。我宁愿避免这种情况,因为我有很多自己的宝石,而且在Gemfile中为依赖项的依赖项做出显式条目是很烦人的(你必须这样做,因为bundler不会读取依赖项的Gemfile)。 / p>
我如何实现目标?