Почему schema.rb изменяется (в глазах Мерзавца), просто выполняя грабли db:migrate?

Это - маленький генерал, которого я знаю, но это прослушивало ад из меня. Я работал над большим количеством проектов направляющих удаленно с Мерзавцем и каждый раз, когда я делаю a git pull и посмотрите, что существует своего рода изменение данных (миграция или изменение schema.rb), я делаю a rake db:migrate.

Они обычно хорошо работают, и я могу продолжить работать. Но если Вы делаете a git pull и затем git status, Ваш рабочий каталог является чистым (очевидно), затем делают a rake db:migrate (очевидно, когда существуют изменения), и другой git status и все внезапное Ваш db/schema.rb изменилось. Я просто делал a git checkout сразу для сброса назад к последней зафиксированной версии schema.rb файла, но почему это должно быть необходимо?! Что направляющие делает? Обновление метки времени? Я, может казаться, не выясняю то, что разность слишком, возможно, я просто пропускаю что-то?

9
задан erskingardner 5 June 2010 в 07:12
поделиться

3 ответа

Схема позволяет машинам запускать rake db:schema:load при первой настройке вместо того, чтобы запускать миграции, которые могут устареть, если модели переименованы или удалены и т.д. Она должна обновляться после миграции, и вы всегда хотите, чтобы последняя версия проверялась в контроле исходного кода.

10
ответ дан 4 December 2019 в 13:45
поделиться

schema.rb отражает схему вашей базы данных, поэтому при миграции (с изменениями) следует, что ваша схема также изменяется, чтобы отразить изменение вашей базы данных. Обычно я добавляю schema.rb в наш gitignore вместе с database.yml (вероятно, потому что вместо использования schema: load, как показано ниже, я обычно делаю дамп sql при клонировании существующего приложения - но это только я)

2
ответ дан 4 December 2019 в 13:45
поделиться

Конец db: migrate - это сброс схемы. У него будут разные временные метки (git должен вам сказать), и разные версии гемов rails / database предоставят вам немного разные форматы. Постоянное наблюдение за этим - небольшое раздражение.

Я рекомендую вам добавить schema.rb в ваш файл .gitignore .

-2
ответ дан 4 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: