Рельсовые светильники против семян
Я изучаю Ruby on Rails, и я хотел бы просто убедиться, что я понимаю разницу между светильниками и данными семян.
Я понимаю, что светильники - это в основном тестовые данные, в которых вы выполняете свои утверждения тестирования, и не имеете постоянной работы, как только ваши тесты выполняются, тогда как семена вы автоматически помещаете в базу данных, когда вы делаете что-то вроде rake db:seed
.
Зачем использовать семена в этом случае? Просто чтобы избежать необходимости выписывать все бесчисленные утверждения тестирования? Для данных, которые, как вам известно, должны быть в базе данных при вводе приложения в эксплуатацию?
(я думаю, статические данные, которые всегда были бы похожи на первого администратора на доске объявлений?)
Ответы
Ответ 1
У тебя все получилось. Данные семян должны заполнить базу данных необходимыми данными, необходимыми для того, чтобы приложение можно было использовать с самого начала, например, чтобы добавить учетную запись администратора по умолчанию, которая требуется для того, чтобы приложение могло управляться с самого начала.
Данные семян не должны использоваться для целей тестирования, а при тестировании вы всегда должны быть уверены, что база данных чиста, так что вы знаете, что единственными данными, которые используются в примере, являются данные, заполненные примером, самим собой, не из каких-либо мест, это позволяет избежать путаницы.
приспособления - один из способов сделать это. но лучше использовать такие фабрики, как factory girl, проверьте это railscast episode для лучшего объяснения.
Ответ 2
Многие приложения нуждаются в некоторых данных для правильной работы. Например, список стран и почтовые индексы. Или список потенциальных ролей для пользователей, даже если в базе данных нет пользователей.
Подумайте о семенных данных с точки зрения того, что потребуется для создания и работы среды разработки. Как правило, для нового разработчика Rails для работы в любом приложении процесс должен всегда выглядеть следующим образом:
- Клонировать репо
- Установите драгоценные камни через bundler
- Создать и занести базы разработки и тестирования
- Запустите тесты, которые должны пройти