Как правильно подходить к файлу Rails db / schema.rb в GIT? - PullRequest
39 голосов
/ 23 июня 2011

Должны ли мы включить schema.rb при совершении транзакций в GIT? или мы должны игнорировать это? какой правильный подход?

Ответы [ 4 ]

62 голосов
/ 23 июня 2011

Что ж, стандартный файл schema.rb для Rails 2 имеет это в конце блока комментария вверху файла:

# It's strongly recommended to check this file into your version control system.

Рельсы 3 schema.rb, которые я носил вокруг, говорят о том же. Я думаю, что комментарий говорит обо всем.


Обновление в ответ на комментарии: Да, ошибки могут быть сделаны, и вы можете получить противоречивые изменения и ошибки, которые повредят ваш schema.rb, но именно поэтому вы хотите, чтобы он находился под контролем версий, контроль версий позволяет вам отслеживать все и создавать резервные копии при необходимости. Во всем дереве исходного кода есть только одна вещь, которая определяет схему базы данных, и это schema.rb. Ваша схема базы данных является критически важным артефактом, и все, что важно, необходимо отслеживать в системе контроля версий.

Любые проблемы обновления / слияния с schema.rb должны решаться просто путем сортировки конфликтующих миграций, чтобы schema.rb исправлялся как побочный эффект от исправления реальной проблемы.

Да, schema.rb - это сгенерированный файл, но он генерируется только в том смысле, что ваш текстовый редактор создает файл модели pancakes.rb или генерируется неотредактированный файл скаффолда.

Да, вы можете перестроить файл schema.rb, создав новую базу данных и выполнив все ваши миграции. Но вы должны время от времени очищать ваши старые миграции, чтобы избежать необходимости проверять сотни файлов миграции каждый раз, когда вы rake db:migrate, так что «перестроить и запустить все миграции» часто не вариант в высокоактивном проекте.

1 голос
/ 23 июня 2011

Да. Файл схемы используется для настройки вашей базы данных при использовании rake db: reset и других команд. Миграции должны использоваться только при изменении схемы базы данных и всегда приводят к новому файлу схемы.

1 голос
/ 23 июня 2011

Ну, он не включен в .gitignore по умолчанию.Поэтому я думаю, что у вас не возникнет проблем с этим (я делаю это в своих проектах без проблем).

0 голосов
/ 23 июня 2011

Я не фиксирую этот файл в Git, потому что он создается при запуске rake db:migrate.

Если я передам этот файл в Git, я не смогу получать новые изменения с сервера после каждого db:migrate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...