Могу ли я запретить Rails использовать префикс временной метки для миграций после того, как некоторые миграции были созданы с использованием временных меток? - PullRequest
0 голосов
/ 18 сентября 2009

В моей папке переноса около сотни миграций с числовыми префиксами, затем около сотни или около того с префиксами временных меток, так что я думаю, что в какой-то момент версия Rails была обновлена. Теперь я хочу запретить Rails использовать префиксы временных меток, так как я предпочитаю числовые префиксы. Каков наилучший способ сделать это, или это вообще возможно? Один из подходов может состоять в том, чтобы вручную переименовать префиксы в порядке их сортировки, а затем перейти в dev, промежуточные и производственные базы данных и изменить временные метки на новые числа, но этот подход выглядит запутанным. Есть ли другой способ сделать это?

1 Ответ

2 голосов
/ 18 сентября 2009

Миграция с меткой времени - это здорово, если у вас есть команда или вы хотите работать и заниматься чем-то другим. Однако вы можете изменить способ именования миграций с помощью параметра конфигурации.

#environment.rb
config.active_record.timestamped_migrations = false

Также .... плагин lazy_developer, который я поддерживаю, имеет задачу превратить все ваши файлы миграции в совершенно новую миграцию. Я не даю никаких гарантий, что это сработает для вас, но я использовал его в нескольких проектах, чтобы добиться того, чего я хочу.

http://github.com/napcs/lazy_developer

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

Опять же, нет гарантии, что это сработает, поэтому сначала сделайте резервную копию или разветвите свой проект!

На вашем месте я бы оставил это в покое. Общепринято иметь имена для миграции, и на самом деле их нужно использовать только один раз. Если вы развертываете на новом сервере или проверяете проект на новом компьютере, вы должны использовать вместо этого rake db: schema: load, поскольку это намного быстрее. Миграции предназначены для развития и постепенных изменений в БД. И, как я уже сказал, миграция с метками времени для многих пользователей.

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