So erhalten Sie Daten von Ecto in einer benutzerdefinierten Mischaufgabe

7

Ich möchte Daten von meinem DB über Ecto in einer benutzerdefinierten Mischaufgabe anzeigen. Wie kann ich das Ecto Repo in meine Aufgabe bringen (oder starten)?

Ich habe so etwas versucht, aber es hat nicht funktioniert:

%Vor%

Dies gibt mir die folgende Ausgabe, wenn ich mix users.list starte:

%Vor%

Irgendeine Idee oder andere Weise, dieses Problem zu lösen?

    
Mika Andrianarijaona 06.07.2016, 13:36
quelle

4 Antworten

11

Es gibt tatsächlich ein Hilfsmodul Mix.Ecto ( Ссылка ) ) Das macht es einfacher, Mischaufgaben zu schreiben, die ecto verwenden:

%Vor%

Dieser Helfer gibt Ihnen Zugriff auf parse_repo/1 , ensure_repo/2 , ensure_started/1 . parse_repo lässt Ihre Aufgabe gut mit anderen ecto mix Aufgaben zusammenpassen, zum Beispiel können Sie -r einen anderen Repo angeben.

%Vor%

ensure_started stellt sicher, dass der Repo läuft, was Ihnen fehlte.

Zur Orientierung und Inspiration können Sie sich ansehen, wie andere ecto-Mischaufgaben auf implementiert werden Ссылка

    
splatte 06.07.2016, 14:24
quelle
5

Als Ergänzung zu Jason Harrelson 's Antwort: es ist auch notwendig Postgrex und Ecto zu starten.

%Vor%

UPDATE:

Ein anderer Ansatz besteht darin, die Anwendung mix zu verwenden, um die Anwendung zu starten:

%Vor%     
denis.peplin 11.11.2016 06:51
quelle
2

Sie müssen sicherstellen, dass der Repo gestartet wird, bevor Sie ihn verwenden

%Vor%     
Jason Harrelson 06.07.2016 14:05
quelle
0

Ich habe auch eine andere Lösung gefunden, wenn ich mit Phoenix arbeite. Ich habe eine neue Datei in priv/repo mit:

erstellt %Vor%

Dann starte ich es mit mix run priv/repo/users.list.exs von meinem Projektstamm.

    
Mika Andrianarijaona 06.07.2016 15:18
quelle

Tags und Links