我正在尝试将我的开发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
答案 0 :(得分:0)
最好只使用数据保存在您的数据库而不是所有数据都无用所以尝试生成你的Yaml:
MyModel.all.map(&:attributes).to_yaml
警告,如果您有大量数据,此技术可能会爆炸您的RAM。考虑生成带限制/偏移的haml。或者使用will_paginate中的paginated_each。