在rspec中没有正确加载to_yaml文件(rails项目)

时间:2010-11-20 11:10:51

标签: ruby-on-rails ruby rspec yaml

我正在尝试将我的开发sqlite3数据库导出到我的测试数据库中。为了做到这一点,我首先将我的模型导出到rails控制台并将其保存到文件中。

> MyModel.all.to_yaml   # this was saved to mymodels.yml

现在当我运行rspec时,它在尝试解析mymodels.yml时失败了。我得到的错误是:

Failure/Error: Unable to find matching line from backtrace
 a YAML error occurred parsing /Users/MakeM/MyProject1/spec/fixtures/mymodels.yml.
     

请注意YAML必须是   始终使用空格缩进。   不允许使用标签。请有一个   看http://www.yaml.org/faq.html        确切的错误是:          NoMethodError:nil的未定义方法`keys':NilClass

知道我为什么会收到这个错误吗?我应该提到的一点是,to_yaml输出的yaml对我来说有点奇怪。这是其中的一部分:

--- 
- !ruby/object:MyModel 
  attributes: 
    id: 133
    book: FirstBook
    chapters: 50
    created_at: 2010-10-06 05:03:15.709931
    updated_at: 2010-10-06 05:03:15.709931
    abbr: FB
  attributes_cache: {}

  changed_attributes: {}

  destroyed: false
  marked_for_destruction: false
  new_record: false
  previously_changed: {}

  readonly: false

1 个答案:

答案 0 :(得分:0)

最好只使用数据保存在您的数据库而不是所有数据都无用所以尝试生成你的Yaml:

MyModel.all.map(&:attributes).to_yaml

警告,如果您有大量数据,此技术可能会爆炸您的RAM。考虑生成带限制/偏移的haml。或者使用will_paginate中的paginated_each。