Padrino 项目生成器失败 - 未定义的方法“add_builtin_type”
Padrino Project Generator Fails - Undefined Method `add_builtin_type'
我是 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 但这并没有改变任何东西。我不知道接下来要尝试什么,或者如何真正解释错误消息。你能给我一些正确方向的建议吗?
正如 joelparkerhenderson 指出的那样,错误消息显示 .rvm 目录中的 gem 文件存在问题,表明存在一些问题或与 rvm 存在冲突。切换到系统 ruby 为我解决了这个问题。我真的不需要在这个项目上使用特定版本的 ruby,所以这对我来说是一个很好的解决方法。
错误报告显示这可能是 RVM 问题。
我建议从 RVM 更改为 "ruby-install" 和 "chruby",因为恕我直言,它们在安装依赖项(包括 psych 及其库)方面更简单、更容易且更好。
我在使用 Ruby 2.1.5 时遇到了这个问题。阅读此处的评论后,我意识到这不是 RVM 问题,而是 ruby 问题。我切换到 2.0.0-p576 并且一切正常。 Psych 不能与新的 ruby 版本兼容。
但是我不明白不同的 ruby 版本会如何导致此方法丢失。如果有人能解释一下,我将不胜感激!
我 运行 使用 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 && gem uninstall psych -v '>= 2.0.9'
我在 S.O. 上大量搜索和阅读各种帖子后,只有我的 rvm 才是问题所在。我得到的 rvm 'WARNING!' rvm 不是 $PATH 中的第一个。您可以使用 echo $PATH
进行检查。检查你的 ~/.bashrc
看看是否有像 heroku toolbelt 或 linuxbrew 之类的东西,将它们自己加载到你的路径前面,即 PRE-PENDING 你的路径,而不是附加。这由类似 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
我知道这只是一点点 off-tangent,但我认为它一定会对外面的一两个人有所帮助!
PS 我在这个项目文件夹中使用 ruby 2.2.2p95。
我是 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 但这并没有改变任何东西。我不知道接下来要尝试什么,或者如何真正解释错误消息。你能给我一些正确方向的建议吗?
正如 joelparkerhenderson 指出的那样,错误消息显示 .rvm 目录中的 gem 文件存在问题,表明存在一些问题或与 rvm 存在冲突。切换到系统 ruby 为我解决了这个问题。我真的不需要在这个项目上使用特定版本的 ruby,所以这对我来说是一个很好的解决方法。
错误报告显示这可能是 RVM 问题。
我建议从 RVM 更改为 "ruby-install" 和 "chruby",因为恕我直言,它们在安装依赖项(包括 psych 及其库)方面更简单、更容易且更好。
我在使用 Ruby 2.1.5 时遇到了这个问题。阅读此处的评论后,我意识到这不是 RVM 问题,而是 ruby 问题。我切换到 2.0.0-p576 并且一切正常。 Psych 不能与新的 ruby 版本兼容。
但是我不明白不同的 ruby 版本会如何导致此方法丢失。如果有人能解释一下,我将不胜感激!
我 运行 使用 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 && gem uninstall psych -v '>= 2.0.9'
我在 S.O. 上大量搜索和阅读各种帖子后,只有我的 rvm 才是问题所在。我得到的 rvm 'WARNING!' rvm 不是 $PATH 中的第一个。您可以使用 echo $PATH
进行检查。检查你的 ~/.bashrc
看看是否有像 heroku toolbelt 或 linuxbrew 之类的东西,将它们自己加载到你的路径前面,即 PRE-PENDING 你的路径,而不是附加。这由类似 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
我知道这只是一点点 off-tangent,但我认为它一定会对外面的一两个人有所帮助!
PS 我在这个项目文件夹中使用 ruby 2.2.2p95。