【问题标题】:Padrino Project Generator Fails - Undefined Method `add_builtin_type'Padrino 项目生成器失败 - 未定义的方法“add_builtin_type”
【发布时间】:2016-01-23 05:01:06
【问题描述】:

我是 Ruby 和 Sinatra/Padrino 的新手,所以如果我遗漏了一些非常简单的东西,我深表歉意。

我的 Sinatra 工作正常,因为我可以构建一个非常简单的“hello”应用并看到它工作。

我想继续并生成一个新的 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,但这并没有改变任何东西。我不知道接下来要尝试什么,或者如何真正解释错误消息。你能给我一些正确的方向吗?

【问题讨论】:

  • 哦,伙计,那是一个额头。不知何故,我完全错过了那里路径中的“rvm”。我现在切换到使用系统 ruby​​,并且生成工作得很好。谢谢!
  • 您应该回复您的评论,以便我将其确定为解决方案! :)

标签: ruby padrino


【解决方案1】:

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

我建议从 RVM 更改为“ruby-install”和“chruby”,因为恕我直言,这些更简单、更容易并且更适合安装依赖项,包括 psych 及其库。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我在使用 Ruby 2.1.5 时遇到了这个问题。在这里阅读 cmets 后,我意识到这不是 RVM 问题,而是 ruby​​ 问题。我切换到 2.0.0-p576 并且一切正常。 Psych 必须与新的 ruby​​ 版本不兼容。

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

      【讨论】:

      • 有点跑题了,但可能值得指出的是,如果你想在你的 padrino 项目中使用 activesupport,无论如何你都必须使用 Ruby >= 2.2.0。
      【解决方案4】:

      我使用 rbenv 和 padrino 0.13.0 遇到了这个问题。尝试了许多版本的 Ruby,包括 OS X El Capitan 上的系统 Ruby,但发现这没有任何区别,所以我现在运行的是最新的稳定版本 (2.2.4)。

      最终我尝试了psych gem 的每个版本,发现我只能让padrino g 与旧版本的gem 一起工作。 Psych 版本 2.0.8 有效,而每个较新的版本(直到当前的 2.0.16)都失败了。

      所以:gem install psych -v=2.0.8 &amp;&amp; gem uninstall psych -v '&gt;= 2.0.9'

      【讨论】:

        【解决方案5】:

        对我来说,经过大量谷歌搜索和阅读 S.O. 上的各种线程后,只有我的 rvm 才是问题所在。我得到了 rvm '警告! rvm 不是 $PATH 中的第一个。您可以通过echo $PATH 进行检查。查看您的~/.bashrc,看看是否有类似 heroku toolbelt 或 linuxbrew 之类的东西,将自己加载到前面的 PATH 中,即预先挂起您的路径,而不是附加。这由export PATH="/usr/local/heroku/bin:$PATH" 之类的东西表示。这将 heroku 设置在 PATH 的开头。只需将其更改为export PATH="$PATH:/usr/local/heroku/bin"

        我试图通过 activesupport 启动一个 padrino 项目,这导致了问题。按照另一个线程中的建议,更改为早期版本的 Ruby 并没有解决问题,因为 activesupport 需要 2.2.0 或更高版本。

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

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

        我知道这有点离题,但我认为它一定会帮助一两个人!

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

        【讨论】:

          猜你喜欢
          • 2012-11-22
          • 1970-01-01
          • 2021-07-14
          • 1970-01-01
          • 2012-12-31
          • 1970-01-01
          • 2019-04-14
          • 2016-02-22
          相关资源
          最近更新 更多