我的 gem 中需要私有 gem,而 gemspec 依赖项不能包含 git 存储库。
所以我用 geminabox 盯着我的私人服务器,并将源代码添加到我的 gemfile 中。
当我捆绑安装或安装名为“core”的 gem 时,会从 rubygems 安装 gem,而不是从我的存储库安装 gem。
如何在 gemspec 中指定我自己的 gem?
最后,如果他们发布了比您更高的版本并且您捆绑更新它,捆绑将获得他们的新版本,所以要非常小心。
更改 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 获取版本的风险。
派对迟到了,但对于任何发现这个问题的人来说,当前的答案是在您的环境中添加一个私有 gem 源。
gem sources --add http://localhost:9292
更多信息可以在这里找到:https ://guides.rubygems.org/run-your-own-gem-server/