Рельсовые светильники против семян

Я изучаю Ruby on Rails, и я хотел бы просто убедиться, что я понимаю разницу между светильниками и данными семян.

Я понимаю, что светильники - это в основном тестовые данные, в которых вы выполняете свои утверждения тестирования, и не имеете постоянной работы, как только ваши тесты выполняются, тогда как семена вы автоматически помещаете в базу данных, когда вы делаете что-то вроде rake db:seed.

Зачем использовать семена в этом случае? Просто чтобы избежать необходимости выписывать все бесчисленные утверждения тестирования? Для данных, которые, как вам известно, должны быть в базе данных при вводе приложения в эксплуатацию?

(я думаю, статические данные, которые всегда были бы похожи на первого администратора на доске объявлений?)

Ответы

Ответ 1

У тебя все получилось. Данные семян должны заполнить базу данных необходимыми данными, необходимыми для того, чтобы приложение можно было использовать с самого начала, например, чтобы добавить учетную запись администратора по умолчанию, которая требуется для того, чтобы приложение могло управляться с самого начала.

Данные семян не должны использоваться для целей тестирования, а при тестировании вы всегда должны быть уверены, что база данных чиста, так что вы знаете, что единственными данными, которые используются в примере, являются данные, заполненные примером, самим собой, не из каких-либо мест, это позволяет избежать путаницы.

приспособления - один из способов сделать это. но лучше использовать такие фабрики, как factory girl, проверьте это railscast episode для лучшего объяснения.

Ответ 2

Многие приложения нуждаются в некоторых данных для правильной работы. Например, список стран и почтовые индексы. Или список потенциальных ролей для пользователей, даже если в базе данных нет пользователей.

Подумайте о семенных данных с точки зрения того, что потребуется для создания и работы среды разработки. Как правило, для нового разработчика Rails для работы в любом приложении процесс должен всегда выглядеть следующим образом:

  • Клонировать репо
  • Установите драгоценные камни через bundler
  • Создать и занести базы разработки и тестирования
  • Запустите тесты, которые должны пройти