2017-04-07 1 views
2

J'ai publié une version de mon application Elixir.
Il commence à exécuter une tâche supervisée à l'aide de la base de données lorsque l'application est lancée.Migration Ecto à partir d'une version d'une application Elixir

Lorsque la base de données n'est pas migrée, la tâche conserve une erreur et l'application est arrêtée. J'ai lu http://blog.firstiwaslike.com/elixir-deployments-with-distillery-running-ecto-migrations/, https://hexdocs.pm/distillery/running-migrations.html, et j'ai essayé d'implémenter la fonction de migration qui les suivait, mais j'ai échoué car l'application doit être démarrée pour charger la configuration de l'application et la terminer.

Lorsque je cours Application.get_all_env(:my_app) sans démarrer mon application, il retourne la liste vide []. Y at-il de toute façon exécuter Ecto.Migrator.run(MyApp.Repo, path, :up, all: true) sans démarrer l'application?

Répondre

2

Il suffit de charger l'application avec Application.load(:my_app) pour avoir accès à l'environnement - il n'a pas besoin d'être démarré.

Un guide détaillé sur l'exécution de migrations avec des versions est disponible dans le distillery documentation.