6

我正在使用一个 gem,它是vendor/gems/some-api-0.1.0从另一个项目复制过来的,并添加到Gemfile

gem 'some-api', :path => '~/development/myproj/vendor/gems/some-api-0.1.0'

但如果我执行以下操作,它将失败并显示消息:

$ bundle install
Fetching source index for http://rubygems.org/
Could not find gem 'some-api (>= 0)' in source at ~/development/myproj/vendor/gems/some-api-0.1.0.
Source does not contain any versions of 'some-api (>= 0)'

在网上搜索似乎建议需要gemspec?所以我需要写.gemspec一些地方,这是真的吗?有人可以弄清楚在这种情况下它是如何完成的吗?

4

2 回答 2

26

stackoverflow 上还有许多其他类似的帖子,但以防万一有人偶然发现这篇文章:

出于某种原因,当您尝试使用本地来源的 gem 时,您需要准确指定您正在使用的 gem 的版本,例如

gem 'some-api', '0.2.0', :path => '~/development/myproj/vendor/gems/some-api-0.1.0'
于 2012-10-15T12:41:31.340 回答
1

仅仅声称 :path 中有一个 gem 并不意味着那里实际上有一个 gem。Gem 有 gemspec 文件,描述 gem 的名称、属于 gem 的文件以及各种其他信息。

Ifsome-api-0.1.0应该包含一个some-api.gemspec在 :path 目录中命名的文件,并且它应该包含有关打包器可以用来从 :path 中要求 gem 的 gem 的信息。

于 2011-05-12T18:22:40.453 回答