我有一个 gemserver,里面有我在内部为更大的应用程序开发的 gem。然而,在开发中,其他人打败了我,开源并在 rubygems 上放置了一个具有相同名称和更高版本的 gem。
我的问题是如何在 Gemfile 和 .gemspec 中专门使用我的服务器中的 gem,而不会意外拉下他的 gem,或者锁定我的 gem 的版本并依赖缓存正确的版本?
gem 'my-gem', :git => 'git://my-git-repo'
如果不是这种情况,您可以使用该path
选项。
gem 'my-gem', :path => './vendor/my-gem'
或者,您可以依赖source
属性 and souce-priority
。基本上,bundler 会在查看 Ruby Gems 之前在您指定的任何来源中查找 gem。
source 'https://my-gem-site.biz'
source 'https://rubygems.org'
这个选项真的是最有意义的。更改 gem 的名称,然后将其推送到 RubyGems 站点,这样其他人就无法使用它,这相对容易。RubyGems 特别指出您必须使用唯一的名称。
命名您的宝石很重要。在为您的 gem 选择名称之前,请在 RubyGems.org 和 GitHub 上进行快速搜索,看看是否有其他人使用了它。每个已发布的 gem 都必须有一个唯一的名称。找到您喜欢的名称后,请务必阅读我们的命名建议。~ RubyGems 指南(已添加重点)