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?
Es gibt tatsächlich ein Hilfsmodul Mix.Ecto
( Ссылка ) ) Das macht es einfacher, Mischaufgaben zu schreiben, die ecto verwenden:
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.
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 Ссылка
Als Ergänzung zu Jason Harrelson
's Antwort: es ist auch notwendig Postgrex
und Ecto
zu starten.
UPDATE:
Ein anderer Ansatz besteht darin, die Anwendung mix zu verwenden, um die Anwendung zu starten:
%Vor%Sie müssen sicherstellen, dass der Repo gestartet wird, bevor Sie ihn verwenden
%Vor% Ich habe auch eine andere Lösung gefunden, wenn ich mit Phoenix arbeite. Ich habe eine neue Datei in priv/repo
mit:
Dann starte ich es mit mix run priv/repo/users.list.exs
von meinem Projektstamm.
Tags und Links elixir phoenix-framework mix