【问题标题】:to_yaml file not loading properly in rspec (rails project)to_yaml 文件未在 rspec 中正确加载(rails 项目)
【发布时间】:2010-11-20 11:10:50
【问题描述】:

我正在尝试将我的开发 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: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

【问题讨论】:

    标签: ruby-on-rails ruby rspec yaml


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢! .map(&:attributes) 究竟是做什么的?我尝试用谷歌搜索,但没有找到任何帮助我理解的东西。
    • 这似乎也不起作用。我得到相同的“失败/错误:无法从回溯错误数据中找到匹配行...”错误。虽然 yaml 看起来确实更接近它应该的样子。
    • map(&:attributes) 调用所有模型的属性方法并生成结果数组
    • 在做了一些研究之后,我认为这是一个与 rspec 2 或 spork 相关的错误。将您的答案标记为正确,因为它帮助我获得了正确的 yaml 格式。谢谢!
    • 这已经很老了,但是为了谷歌等... - array.map(&:foo) 是一个 Rubyism 在这里的高评价答案中解释:stackoverflow.com/questions/2259775/…
    猜你喜欢
    • 2014-11-14
    • 2015-03-28
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多