2016-03-31 10 views
4

Arbeiten an einer Anwendung mit Elixir/Mix gebaut.Wie man "Mix" -Befehle in einem Release ausführt (elixir/exrm)?

Wir haben eine Reihe von Dienstprogrammfunktionen (z. B .: seed/clear Mnesia db), die wir als elixir mix foo ausführen.

Sobald ein Release erstellt wurde (mit mix + exrm) und auf einem Zielcomputer implementiert wird (wo wir keine vollständige Build-Kette oder vollständige Quelle erwarten) gibt es eine praktische Möglichkeit, auf diese Befehle zuzugreifen?

+0

Überprüfen Sie diese https://github.com/bitwalker/exrm/issues/67#issuecomment-183457937 – Gazler

+0

@ Gazler, die als eine erfolgreiche Antwort qualifiziert! Vielen Dank! –

+0

Ich habe den Kommentar in eine Antwort kopiert und als Community Wiki markiert. Dadurch kann jeder die Antwort ändern, aber das bedeutet, dass die Frage nicht unbeantwortet bleibt. Bitte akzeptieren Sie es, wenn Sie eine Chance haben. :) – Gazler

Antwort

2

Bitte sehen https://github.com/bitwalker/exrm/issues/67#issuecomment-183457937

Nun, da # 286 festgelegt ist und ich habe die folgende Vorgehensweise empfehlen, das ist, wie wir es tun:

eine eScript bauen, die die Aufgaben ruft Sie in verfügbar sein soll und rufen sie es aus der Veröffentlichung: die Release (https://gist.github.com/MSch/9cfc185e24e2f3509650 ein exrm Plugin):

rel/pssync/bin/pssync eScript bin/ auf diese Weise release_tasks.escript wandern wir kontrollieren können, wann und wo man wandern, Samen, etc

Es gibt einige Duplizierung/Indirection, da wir (die meisten) der verfügbaren Aufgaben sowohl über Mix in Entwicklung als auch über release_tasks.escript in der Produktion haben wollen, aber das ist überschaubar. Es bedeutet auch, dass wir migrieren können, ohne unsere OTP-Anwendung vollständig zu starten.

In einer idealen Zukunft würde dies in exmr integriert und enger integriert werden, so dass ich rel/pssync/bin/pssyc migrieren kann, aber bis jetzt hatten wir bereits eine großartige Erfahrung mit unserem Ansatz.