bundle install为#<bundler :: dsl:0x00000001c4e1f8> </bundler :: dsl:0x00000001c4e1f8>提供未定义的方法`ruby'>

时间:2012-07-14 02:43:38

标签: ruby bundler

bundle install正在给予:

> undefined method `ruby' for #<Bundler::Dsl:0x00000001c4e1f8>

知道怎么解决?我正在使用Ruby 1.9.3-p125。

4 个答案:

答案 0 :(得分:19)

Gembundler版本1.2引入了ruby method to the dsl,允许您指定应用应使用的Ruby版本。

看起来您正在使用的Gemfile是针对此新版本编写的,但您拥有的Bundler版本不支持ruby方法。您需要安装最新的捆绑包(gem install bundler应该这样做)或从Gemfile中删除该行。

答案 1 :(得分:5)

运行这些命令,问题将解决

第1步:安装bundler                  gem install bundler
第2步:捆绑安装

它将解决问题..

答案 2 :(得分:1)

您正在Gemfile中调用ruby 'something or other'

这个单行应该为您找到违规行(请注意,您需要与Gemfile位于同一个目录中,并且ca $ h表示提示 - 在您的系统上可能是>

$ ruby -ne 'print "(line #$.) #$_" if /^\s*ruby/' Gemfile

如果不理解你为什么这样做,我不能告诉你应该做些什么,但是作为Bundler的DSL的一部分,没有ruby方法。

您可以看到DSL代码here

您可以查看Bundler的文档here以及Gemfiles here的文档。

答案 3 :(得分:0)

您可能正在使用过时版本的bundler

您可以使用

检查正在使用的bundler版本
bundle --version

如果它早于1.2版,它可能已经过时,基于matt's answer

在我的情况下,我已经完成了gem install bundler,但忘了做rbenv rehash(我使用rbenv),因此它没有使用我刚刚安装的捆绑包,而是一个旧的,过时的版本。