Domanda

Ho del codice che eseguo da un inizializzatore e funziona bene. (Salva le impostazioni predefinite da un file YAML al database per il Cache da binnie gemma.)

Ma quando lo eseguo su Travis CI, poiché sta facendo una migrazione da zero, l'inizializzatore fallisce perché la tabella non esiste ancora.

C'è un modo per eseguire il codice dopo la migrazione ma prima dell'inizio dell'applicazione?

È stato utile?

Soluzione

Quindi, anche se non mi piace farlo, un modo semplice per impedire l'inizializzatore di funzionare durante DB: Migrate, ma l'esecuzione di Applicazione di inizio o test è quello di avvolgerlo in una clausola se la tabella esiste. Quindi, se prendi il tuo codice iniziale esistente e lo avvolgi

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end

Laddove "Table_name" è il nome della tabella mancante, quindi entrambi i rastrelli DB: migra e l'esecuzione delle specifiche dovrebbero essere in grado di completare correttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top