为什么 bundler 找不到Mechanize gem?
以下是我的Rails项目的Gemfile:
gem 'mechanize', :git => 'git://github.com/tenderlove/mechanize.git'
运行bundle install会引发以下错误:
Updating git://github.com/tenderlove/mechanize.git
Fetching source index for http://rubygems.org/
Could not find gem 'mechanize (>= 0)' in git://github.com/tenderlove/mechanize.git (at master).
Source does not contain any versions of 'mechanize (>= 0)'
我在分配项目后做了一些小的更改后得出了这个问题,但是无法让bundler使用github位置和本地路径。为什么它找不到宝石?
如果我删除所有说明并只执行gem 'mechanize'
,那么它可以完美无缺地工作。
版本: Bundler 1.0.14 + Rails 3.1发布Canditate + Ruby 1.8.7(通过RVM)+ Debian 5
答案 0 :(得分:6)
看起来好像the project is missing a gemspec and one won't be getting added.
您应该能够将项目克隆到vendor / gems目录中。您还需要创建一个mechanize.gemspec文件。 然后,您可以使用类似的东西在Gemfile中使用它。
gem 'mechanize', :path => 'vendor/gems/mechanize'
答案 1 :(得分:1)
我见过旧版本的bundler与git://像urls一样有问题。
您是否尝试过更新bundler;或用http://?
替换git://答案 2 :(得分:1)
如果将来有人偶然发现这个话题,我就是为了让它发挥作用而做的......
我分叉了项目,做了我的更改,然后运行以下命令生成.gemspec:
rake debug_gem | grep -v "(in " > `basename \`pwd\``.gemspec
我不得不稍作修改,因为gemspec试图包含一个不存在的.gemtest文件。
然后我将我的Gemfile修改为源自路径:
gem 'mechanize', :path => '/my_rails_app/vendor/gems/mechanize'
然后我运行捆绑安装,一切都顺利完成。
答案 3 :(得分:1)
明确使用版本。它们不支持未发布的版本,因此它们会删除gemspec文件。
gem 'mechanize', '2.0.1'
它对我有用。
答案 4 :(得分:0)
我遇到了同样的问题,我通过在名称和路径之间添加gem版本来改变。
gem' image_core',' 0.0.1',:path => ' ./ LIB /发动机/ image_core'