【问题标题】:In Rails 3's "bundle install" of local gem (frozen gem), keep getting "Source does not contain any versions of ..."?在 Rails 3 的本地 gem(冻结 gem)的“捆绑安装”中,不断收到“Source does not contain any versions of ...”?
【发布时间】:2011-03-21 18:03:38
【问题描述】:

我正在使用 vendor/gems/some-api-0.1.0 中的 gem,从另一个项目复制并添加到 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,这是真的吗?有人可以解释一下在这种情况下它是如何完成的吗?

【问题讨论】:

  • 不确定是否是这种情况,但也许是 ~ 对您的主目录的引用?尝试使用绝对路径(例如 /Users/username/development/myproj..."
  • 这是您创建的 gem 还是公共 gem?

标签: ruby-on-rails ruby-on-rails-3 gem bundler gemspecs


【解决方案1】:

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

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

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

【讨论】:

  • 这个答案对我不起作用。但后来我重新克隆了我的本地 gem,它又可以工作了。所以也许我的 gem 目录在某种程度上已经损坏了。
  • 为我工作!谢谢!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2013-09-02
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多