Rake in Rails: следует ли использовать db: reset?

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

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

В настоящее время я пишу это:

bin/rake db:drop:all db:create:all db:migrate db:seed db:test:prepare

Это много, чтобы печатать, но оставляет данные семени только в обеих dev и тестовых базах данных. Я не уверен, как это отличается от db:reset, что было бы более удобно печатать.

Должен ли я использовать db:reset или написать пользовательскую задачу db:from_scratch?

Ответы

Ответ 1

Если вы не знаете, что делает рейк-задача, я бы предложил не использовать ее. В этом случае вы, вероятно, хорошо, однако db:reset не эквивалентен тому, что вы делаете выше. db:reset воссоздает базу данных из schem.rb, это может быть иначе, поскольку вы могли бы написать написанные миграции, которые еще не были выполнены.

Я бы предположил, что вы используете пользовательскую задачу rake, затем можете изменить ее в соответствии с вашими точными целями, особенно если вы хотите выполнять другие задачи (например, тегирование в git)

Ответ 2

Вы должны использовать:

rake db:reset

Это будет отбросить базу данных, воссоздать и загрузить текущую схему.

Полный список задач rake db:

rake --describe db

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

Ответ 3

То, что вы пытаетесь достичь в своих задачах, выполняемых с помощью рейка, - это установка тестовой и базы данных разработки. rake db:reset будет просто делать это для вашей текущей среды db в соответствии с schema.rb, а затем загружать данные семян в db. Обычно schema.rb никогда не редактируется, его для цели только для ссылок/ссылки, однако у некоторых людей обычно есть разные schema.rb, которые могут создать проблему:( Что для меня лучше, если вам нужно установите как свою базу разработки, так и тестовую базу данных, затем запустите свои миграции для среды dev и используйте schema.rb для создания тестовой среды db. Я бы определенно предложил вам получить второе мнение от какого-то гуру Rails, хотя, чтобы узнать реальный способ достижения желаемого.

Ответ 4

rake db: reset Это приведет к сбросу базы данных, ее воссозданию и загрузке текущей схемы.

rake db: reset будет запускать rake db: seed

Пример:

Если у вас есть файл семени, который вы написали после того, как вы выполнили свою миграцию, он тоже запустится.