Ответ 1
Ну, стандартный файл schema.rb
для Rails 2 имеет это в конце блока комментариев в верхней части файла:
# It strongly recommended to check this file into your version control system.
The Rails 3 schema.rb
, который я пинаю, говорит то же самое. Я думаю, что в комментарии говорится все.
Обновление в ответ на комментарии:
Да, ошибки могут быть сделаны, и вы можете получить противоречивые изменения и ошибки, искажающие ваш schema.rb
, но именно поэтому вы хотите, чтобы он находился под контролем версий, контроль версий позволяет вам отслеживать все и при необходимости делать резервные копии. Во всем исходном дереве есть только одна вещь, которая указывает вашу схему базы данных, а это schema.rb
. Ваша схема базы данных абсолютно является критическим артефактом, и все, что важно, нужно отслеживать в контроле версий.
Любые проблемы с обновлением/слиянием с schema.rb
должны быть отсортированы просто путем сортировки ваших конфликтующих миграций, поэтому schema.rb
будет исправлена как побочный эффект для фиксации реальной проблемы.
Да, schema.rb
является сгенерированным файлом, но он генерируется только в том смысле, что ваш текстовый редактор генерирует ваш файл модели pancakes.rb
или создается файл неотредактированного архива.
Да, вы можете восстановить свой файл schema.rb
, создав новую базу данных и затем выполнив все ваши миграции. Но вы должны время от времени очищать свои старые миграции, чтобы избежать необходимости проверять сотни файлов миграции каждый раз, когда вы rake db:migrate
, поэтому "перестраивать и запускать все миграции" часто не является вариантом в очень активном проекте.