Padrino项目生成器失败 - 未定义的方法`add_builtin_type'

时间:2015-01-09 22:31:10

标签: ruby padrino

我对Ruby和Sinatra / Padrino都很陌生,所以如果我错过了一些非常简单的事情,我会道歉。

我让Sinatra工作正常,因为我可以建立一个非常简单的"你好"应用并看到它的工作。

我想继续前进并生成一个新的Padrino项目,但是当我这样做时:

$ padrino g project foobar

我明白了:

/Users/dave/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.0/lib/active_support/ordered_hash.rb:3:in `<top (required)>': undefined method `add_builtin_type' for Psych:Module (NoMethodError)
from /Users/dave/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:121:in `require'
from /Users/dave/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:121:in `require'
from /Users/dave/.rvm/gems/ruby-2.1.5/gems/padrino-gen-0.12.4/lib/padrino-gen.rb:3:in `<top (required)>'
from /Users/dave/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/dave/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/dave/.rvm/gems/ruby-2.1.5/gems/padrino-gen-0.12.4/bin/padrino-gen:12:in `<main>'

我尝试过安装Psych gem,但这并没有改变任何东西。我不知道接下来要尝试什么,或者如何真正解释错误消息。你可以给我一些正确方向的推动吗?

4 个答案:

答案 0 :(得分:2)

错误报告显示这可能是RVM问题。

我建议从RVM更改为“ruby-install”和“chruby”,因为恕我直言这些更简单,更容易,并且更好地安装包括心理及其库在内的依赖项。

答案 1 :(得分:1)

正如joelparkerhenderson所指出的,错误消息显示.rvm目录中的gem文件存在问题,这表明存在某些问题或与rvm冲突。切换到系统ruby解决了我的问题。我并不需要在这个项目中使用特定版本的ruby,这对我来说是一个很好的解决方法。

答案 2 :(得分:0)

使用Ruby 2.1.5时遇到了这个问题。在阅读了这里的评论后,我意识到它不是RVM问题,而是红宝石问题。我切换到2.0.0-p576,一切正常。 Psych不能与新的ruby版本兼容。

但是,我不明白不同的ruby版本会如何导致此方法丢失。如果有人能解释我会很感激!

答案 3 :(得分:0)

对我来说,经过大量的谷歌搜索和阅读S.O.上的各种线程,只有我的rvm才是问题所在。我正在接受警告!&#39;警告!&#39; rvm并不是$ PATH的第一名。您可以使用echo $PATH进行检查。看看你的~/.bashrc看看是否有像heroku toolbelt或linuxbrew之类的东西,或者其他任何东西,将它们加载到FRONT的FRH中,即预先修改你的路径,而不是APPENDING。这由export PATH="/usr/local/heroku/bin:$PATH"之类的东西表示。这会在你的PATH的开头设置heroku。只需将其更改为export PATH="$PATH:/usr/local/heroku/bin"

我试图使用activesupport启动padrino项目,这导致了问题。如另一个线程所示,更改为早期版本的Ruby并没有削减它,因为activesupport需要2.2.0或更高版本。

修复我的PATH,确保在PATH的最开始时初始化了rvm,修复了我的Padrino问题,并且能够使用以下命令初始化项目:

padrino g project sample_blog -t shoulda -e haml -c sass -s jquery -d activerecord -b

我知道这一切都有点偏离,但我认为它必然会帮助那里的一两个人!

PS我在这个项目文件夹中使用了ruby 2.2.2p95。