Esportazione/importazione impostazioni

Niente di davvero grande, ma ho incontrato un piccolo problema usando site_settings:import e mi ha colpito forte.
Esiste un workaround semplice ma brutale (eseguire il task rake due volte), ma questo è tipicamente qualcosa che viene eseguito in modo automatico, quindi all’inizio non ho visto l’errore.

File delle impostazioni esportate (parte) (site_settings:export)

sso_overrides_email: 'true'
email_editable: 'false'

Importazione di quel file in un altro forum:

ERRORE: sso_overrides_email: Devi disabilitare 'email modificabile' prima di abilitare questa impostazione.
Cambiato email_editable DA: t A: false

La seconda esecuzione ovviamente rileva l’impostazione:

Cambiato sso_overrides_email DA: f A: true

Possibili soluzioni:

  • Conviverci e semplicemente eseguire il task rake di importazione due volte
  • Esportare le impostazioni in ordine di updated_at
  • Far sì che il task rake esegua l’importazione due volte
  • Disabilitare questo tipo di controlli quando si importa da un file
3 Mi Piace

Quale soluzione pensi abbia più senso?

Non sono sicuro.

funzionerà, non richiederà troppo sforzo ed è la soluzione più logica, ma fallirà comunque se vengono implementate restrizioni aggiuntive dopo la creazione delle impostazioni.

funzionerà, ma non avrà senso per le persone,

è davvero brutto, ma funziona

potrebbe introdurre tutti i tipi di problemi spiacevoli e richiederebbe molto lavoro.

2 Mi Piace

Non credo che questo funzionerà.

Per me, la soluzione più semplice è eseguirlo due volte; se la seconda volta si verifica un errore, si interrompe.

Detto questo, non è affatto banale come “eseguire due volte”.

  1. Lo esegui la prima volta, intercettando gli errori su ogni singola impostazione che applichi.
  2. La seconda volta lo esegui in batch e ti fermi se qualcosa fallisce.

Se stiamo già gestendo questo caos, dobbiamo affrontare anche i casi in cui ci sono più dipendenze in gioco.

C’è poi la questione del rollback pulito, quindi non è affatto un compito banale.

2 Mi Piace