Скажем, например, я управляю приложением Rails со статическим содержимым, которое актуально во всех моих средах, но я все еще хочу иметь возможность изменять при необходимости. Примеры: состояния, вопросы для викторины, сорта вина и т. Д. Есть связь между вашим пользовательским контентом и этими статическими данными, и я хочу иметь возможность изменять его в реальном времени, если это необходимо, поэтому он должен храниться в базе данных.
Я всегда справлялся с миграциями, чтобы синхронизировать мою команду и все окружение.
У меня были люди, которые догматично говорили мне, что миграция должна быть только для структурных изменений в базе данных. Я вижу смысл.
Мой контраргумент состоит в том, что эти в основном «статические» данные необходимы для функционирования приложения, и если я не буду автоматически обновлять их (все уже обучены выполнять миграцию), у кого-то будут сбои и поискать вокруг в чем проблема, прежде чем они выяснят, что новое обязательное поле было добавлено в таблицу и что им нужно что-то импортировать. Так что я просто делаю это в процессе миграции. Это также делает развертывание намного проще и безопаснее.
Способ, которым я конкретно занимался, состоит в том, чтобы обновлять файлы своих тестовых данных с хорошими данными (что дает побочный эффект, позволяющий мне писать более реалистичные тесты) и повторно импортировать их при необходимости. Я делаю это с connection.execute "some SQL"
, а не с моделями, потому что я обнаружил, что Model.reset_column_information
+ куча Model.create
иногда срабатывает, если все сразу обновляются, но в конечном итоге взорвется мне в лицо, когда я скажу, чтобы подтолкнуть, скажем, несколько недель спустя, потому что у меня будут более новые проверки модели, которые будут конфликтовать с двухнедельной миграцией.
В любом случае, я думаю, что этот процесс YAML + SQL работает немного меньше, но я также нахожу его довольно хитрым. Мне было интересно, как люди управляют такими данными. Есть ли другие трюки, доступные прямо в Rails? Существуют ли драгоценные камни для управления статическими данными?