我的gem中需要私有gem,而gemspec依赖项不能包含git repository。
所以我用geminabox盯着我的私人服务器并将源代码添加到我的gemfile中。
当我捆绑安装或安装名为“core”的gem时,则从rubygems安装gem而不是从我的存储库。
如何在gemspec中指定我自己的宝石?
答案 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/