Экспорт/импорт настроек

Ничего особо серьезного, но я столкнулся с небольшой проблемой при использовании site_settings:import, и она доставила мне много хлопот.
Существует простой, но неуклюжий обходной путь (запустить задачу rake дважды), однако обычно это выполняется без участия человека, поэтому я сначала не заметил ошибку.

Часть экспортированного файла настроек (site_settings:export):

sso_overrides_email: 'true'
email_editable: 'false'

Импорт этого файла в другой форум:

ERROR: sso_overrides_email: Вы должны отключить «редактирование email», прежде чем включать эту настройку.
Изменено email_editable ИЗ: t В: false

При втором запуске, разумеется, настройка подхватывается:

Изменено sso_overrides_email ИЗ: f В: true

Возможные решения:

  • Смириться с этим и просто запускать задачу импорта rake дважды
  • Экспортировать настройки в порядке updated_at
  • Заставить задачу rake выполнять импорт дважды
  • Отключить подобные проверки при импорте из файла
3 лайка

Какое решение, по вашему мнению, является наиболее логичным?

Я не уверен.

сработает, не потребует больших усилий и выглядит наиболее логично, но всё равно не сработает, если после создания настроек будут введены дополнительные ограничения.

сработает, но это будет непонятно людям,

действительно некрасиво, но работает.

может привести к появлению всевозможных проблем и потребует значительных усилий.

2 лайка

Думаю, это не сработает.

Самый простой для меня вариант — запустить это дважды, и если во второй раз возникнет ошибка, просто прервать выполнение.

Тем не менее, это не так тривиально, как «запустить дважды»:

  1. Вы запускаете это в первый раз, перехватывая ошибки для любой конкретной устанавливаемой настройки.
  2. Во второй раз вы просто запускаете это пакетно и прерываете выполнение, если что-то не удалось.

Если мы уже занимаемся этим хаосом, нам нужно также обрабатывать случаи, когда есть несколько зависимостей.

Также остаётся вопрос о чистом откате, поэтому это вовсе не тривиальная задача.

2 лайка