gemspec中的私人宝石

时间:2013-10-19 10:15:00

标签: ruby rubygems gem bundler gemspecs

我的gem中需要私有gem,而gemspec依赖项不能包含git repository。

所以我用geminabox盯着我的私人服务器并将源代码添加到我的gemfile中。

当我捆绑安装或安装名为“core”的gem时,则从rubygems安装gem而不是从我的存储库。

如何在gemspec中指定我自己的宝石?

2 个答案:

答案 0 :(得分:4)

最后,如果他们发布了比你更大的版本并且捆绑更新它,bundle将获得他们的新版本,所以要非常小心。

更改Gemfile中源代码行的顺序,优先级顺序相反:

source 'https://rubygems.org'
source 'http://yourgeminaboxhost/gems'

尽管如此,请确保使用将解析为已发布的gem版本的版本规范:

gem 'core', '0.0.1'    # If both gems have that version, it will get the one
                       # in the last sourced gem server
gem 'core', '~> 0.0.1' # This will get the greatest version greater than 0.0.1 and 
                       # lower than 0.1.0 in any of the sources so be careful
                       # because the one in rubygems is 0.0.6 > 0.0.1

另一种选择是将你的版本号增加到他们的版本号并在你的gemfile中指定它,假设你将你的gem发布为1.0.0:

gem 'core', '~> 1.0.0' # This will get your releases until they start to 
                          # release a version greater than 1.0.0

最后一种方法是更改​​名称,可能是命名空间,因为如果有人发布了与Gemfile中的版本规范匹配的更高版本,则总是存在从rubygems.org获取版本的风险。

答案 1 :(得分:1)

晚些时候参加聚会,但是对于发现此问题的任何人,当前的答案是在您的环境中添加私人宝石资源。

gem sources --add http://localhost:9292

更多信息可以在这里找到:https://guides.rubygems.org/run-your-own-gem-server/