在我的OS X开发系统上:
$ ruby --version
ruby 1.8.6 (2007-03-13 patchlevel 0) [universal-darwin8.0]
$ script/console
Loading development environment (Rails 2.3.4)
>> require 'yaml'
=> []
在CentOS 5.3生产系统上:
$ script/console production
Loading production environment (Rails 2.3.4)
/opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:1959:in `method_missing':NoMethodError: undefined method `define_index' for #<Class:0x2e6f7b0>
>> require 'yaml'
=> false
我可以对NoMethodError做些什么吗?
为什么yaml不可用。它不是核心Ruby库的一部分吗?
答案 0 :(得分:13)
返回false表示加载成功或已完成。如果无法加载,则会引发异常。
答案 1 :(得分:1)
它是Ruby核心库的一部分,但我不确定与Ruby Enterprise Edition捆绑在一起的是什么。检查yaml.rb是否在$ LOAD_PATH中。例如,请在irb中尝试:
$LOAD_PATH.collect { |path| File.join(path, 'yaml.rb') }.find { |path| File.exist?(path) }
在OS X上它会产生类似的东西:
=> "/opt/local/lib/ruby/1.8/yaml.rb"