“突然”调用YAML.load_file时出现无效的子类错误

时间:2011-07-02 20:06:59

标签: ruby yaml rspec2

我正在使用: Rails 3.0.7和 Rspec 2.5.0 通过rvm

当我在下面运行此规范(使用自动测试或捆绑exec自动测试或捆绑exec rspec spec /)时:

require 'spec_helper'
require 'yaml'

def twitter_feed(id=1) 
   ruby_object = YAML.load_file(::Rails.root.to_s + "/spec/fixtures/feeds/twitter_response_#{id}.yml")
end

我明白了:

 Failure/Error: ruby_object = YAML.load_file(::Rails.root.to_s + "/spec/fixtures/feeds/twitter_response_#{id}.yml")
    TypeError:
      invalid subclass
      # ./spec/models/tweet_spec.rb:6:in `twitter_feed'
      # /Users/natebean/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/yaml.rb:133:in `transfer'
      # /Users/natebean/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/yaml.rb:133:in `node_import'
      # /Users/natebean/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/yaml.rb:133:in `load'
      # /Users/natebean/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/yaml.rb:133:in `load'
      # /Users/natebean/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/yaml.rb:144:in `load_file'
      # /Users/natebean/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/yaml.rb:143:in `open'
      # /Users/natebean/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/yaml.rb:143:in `load_file'
      # ./spec/models/tweet_spec.rb:5:in `twitter_feed'
      # ./spec/models/tweet_spec.rb:58

这“正在”工作。我在互联网上找不到关于此错误的任何其他信息。我已经从rails 3.0.3迁移到3.0.7,但是不记得升级后它没有工作。

有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:1)

我拉的yaml文件正在寻找Hashie :: Mash来映射数据。直到知道我不需要'hashie',但这已“解决了这个问题”。

我在我的规范中添加了它,它现在正在运行。

require 'hashie'

答案 1 :(得分:0)

运行bundle exec rspec spec --backtrace以获得完整的回溯,以便您可以准确查看错误的来源。