在Rails 3的本地gem(冻结宝石)的"捆绑安装"中,不断获取"Source不包含任何版本的......"?

nop*_*ole 5 gem ruby-on-rails bundler gemspecs ruby-on-rails-3

我正在使用一个宝石,vendor/gems/some-api-0.1.0从另一个项目复制,并添加到Gemfile:

gem 'some-api', :path => '~/development/myproj/vendor/gems/some-api-0.1.0'
Run Code Online (Sandbox Code Playgroud)

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

$ 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)'
Run Code Online (Sandbox Code Playgroud)

在网上搜索似乎建议需要gemspec?所以我需要在.gemspec哪里写一些,是真的吗?有人可以说明在这种情况下如何做到这一点?

S.Y*_*han 25

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

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

gem 'some-api', '0.2.0', :path => '~/development/myproj/vendor/gems/some-api-0.1.0'
Run Code Online (Sandbox Code Playgroud)


ind*_*ect 1

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

如果some-api-0.1.0应该包含在 :path 目录中命名的文件some-api.gemspec,并且它应该包含有关 gem 的信息,捆绑器可以使用该信息来要求 :path 之外的 gem。