Какой хороший способ обработки данных в Prod, Dev, Test DB в Rails 3 (с использованием Cucumber)? - PullRequest
0 голосов
/ 21 января 2011

У меня есть небольшое приложение на Rails 3 (у вас есть список с фотографиями и ценами), и я пытаюсь пройти тестирование Cucumber BDD.

У меня есть 2 типа данных базы данных:

1) Существуют согласованные данные (например, таблица ценовых диапазонов), которые должны быть одинаковыми на моих серверах Prod, Dev и Test.

2) Затем есть другие данные, которые могут изменяться в каждой среде.(например, имена пользователей, список данных и т. д.).Мне просто нужно убедиться, что у меня есть хороший разброс данных на моих серверах разработки и тестирования, который соответствует данным, которые должны / будут в продукт.

У меня есть 2 вопроса.

Первое: чтолучший способ обработки данных, как это?Как я могу без проблем обеспечить согласованность между различными средами?

Во-вторых: я использую приборы для заполнения моего dev db .Мне трудно заполнить мою тестовую базу данных .Каков наилучший способ заполнить тестовую базу данных (при использовании Cucumber), чтобы я мог выполнять свои сценарии?

Ответы [ 2 ]

3 голосов
/ 21 января 2011

как предложено, дБ / семена могут использоваться для некоторых случаев использования, вы также можете проверить это решение: http://jedschneider.posterous.com/using-semi-static-data-as-an-activerecord-mod, которое может касаться других вариантов использования.

Что касается огурца, то настоящая философия огурца заключается в том, чтобы создать ресурс через веб-интерфейс, например, чтобы создать пользователя: перейти к входу пользователя, зарегистрироваться, войти как этот пользователь. Они препятствуют прямому доступу к модели (стр. 292 иша), но, на мой взгляд, это слишком удобно, если не проверять рабочий процесс веб-интерфейса.

Для этого я предпочитаю использовать фабрики, а не осветительные приборы, поскольку они менее хрупки в продолжающейся разработке. Я бы порекомендовал factory_girl или factory_girl_rails для Rails 3. Таким образом, вы можете иметь определение шага:

/Given a valid user exists?/ do
  @user = Factory(:user)
end

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

2 голосов
/ 21 января 2011

https://github.com/rails/rails/commit/4932f7b38f72104819022abca0c952ba6f9888cb

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

.

Второй вопрос должен быть прямым, rake db: fixtures: нагрузка не должна зависеть от окружающей среды. Таким образом, вы должны быть в состоянии сделать что-то вроде RAILS_ENV=test rake db:fixtures:load, и это должно загрузить вашу тестовую базу данных данными вашего прибора.

...