файл to_yaml не загружается должным образом в rspec (проект rails)

Я пытаюсь экспортировать базу данных разработки 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

Есть идеи, почему я получаю эту ошибку? Одна вещь, которую я должен упомянуть, это то, что yaml, выводимый to_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

person MakeM    schedule 20.11.2010    source источник


Ответы (1)


Лучше использовать только данные, сохраненные в вашей базе данных, а не все данные бесполезны Итак, попробуйте сгенерировать свой Yaml следующим образом:

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

Предупреждение, эта техника может взорвать вашу оперативную память, если у вас много данных. Подумайте создать свой haml с пределом / смещением. или с paginated_each из will_paginate.

person shingara    schedule 20.11.2010
comment
Спасибо! Что именно делает .map (&: attributes)? Я пробовал погуглить, но ничего не нашел, что могло бы помочь мне понять. - person MakeM; 20.11.2010
comment
Это тоже не работает. Я получаю тот же отказ / ошибку: невозможно найти соответствующую строку из обратной трассировки. Плохие данные для ... ошибки. Хотя yaml действительно выглядит намного ближе к тому, как он должен выглядеть. - person MakeM; 20.11.2010
comment
map (&: attributes) Вызов всей модели метода атрибутов и создание массива результатов - person shingara; 20.11.2010
comment
после некоторых исследований я думаю, что это ошибка, связанная с rspec 2 или spork. отметив свой ответ правильным, поскольку это помогло мне получить правильный формат yaml. Благодарность! - person MakeM; 20.11.2010
comment
Это очень давно, но ради Google и т. Д ... - array.map (&: foo) - это Rubyism, объясненный в высоко оцененном ответе здесь: stackoverflow.com/questions/2259775/ - person Andrew Hodgkinson; 01.10.2013