2

我有一个 gemserver,里面有我在内部为更大的应用程序开发的 gem。然而,在开发中,其他人打败了我,开源并在 ruby​​gems 上放置了一个具有相同名称和更高版本的 gem。

我的问题是如何在 Gemfile 和 .gemspec 中专门使用我的服务器中的 gem,而不会意外拉下他的 gem,或者锁定我的 gem 的版本并依赖缓存正确的版本?

4

1 回答 1

1

选项 1:从 Git 存储库中提取

假设您要从 git 存储库中提取 Gem

gem 'my-gem', :git => 'git://my-git-repo'

选项 2:从本地路径中提取

如果不是这种情况,您可以使用该path选项。

gem 'my-gem', :path => './vendor/my-gem'

选项 3:使用来源和来源优先级

或者,您可以依赖source属性 and souce-priority。基本上,bundler 会在查看 Ruby Gems 之前在您指定的任何来源中查找 gem。

source 'https://my-gem-site.biz'
source 'https://rubygems.org'

选项 4:更改 Effing 名称

这个选项真的是最有意义的。更改 gem 的名称,然后将其推送到 RubyGems 站点,这样其他人就无法使用它,这相对容易。RubyGems 特别指出您必须使用唯一的名称。

命名您的宝石很重要。在为您的 gem 选择名称之前,请在 RubyGems.org 和 GitHub 上进行快速搜索,看看是否有其他人使用了它。每个已发布的 gem 都必须有一个唯一的名称。找到您喜欢的名称后,请务必阅读我们的命名建议。~ RubyGems 指南(已添加重点)

于 2013-08-21T12:42:50.763 回答