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
Пример:
Если у вас есть файл семени, который вы написали после того, как вы выполнили свою миграцию, он тоже запустится.