Question

J'ai du code que j'exécute à partir d'un initialiseur et cela fonctionne bien. (Il enregistre les paramètres par défaut d'un fichier YAML à la base de données pour le rails-set-cache gemme.)

Mais lorsque je l'exécute sur Travis CI, car il fait une migration à partir de zéro, l'initialisateur échoue car le tableau n'existe pas encore.

Existe-t-il un moyen d'exécuter du code après la migration mais avant le début de la demande?

Était-ce utile?

La solution

Ainsi, même si je n'aime pas faire cela, un moyen facile d'empêcher l'initialisateur d'exécuter pendant la base de données: migrez, mais en cours d'exécution sur le démarrage de l'application ou le test est de l'envelopper dans un test de clause si le tableau existe. Donc, si vous prenez votre code d'initialiseur existant et enveloppez-le

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

Où 'Table_Name' est le nom de la table manquante, puis Rake DB: Migrate et l'exécution des spécifications devrait être en mesure de terminer avec succès.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top