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)?So erhalten Sie Daten von Ecto in einer benutzerdefinierten Mischaufgabe
Ich habe versucht, so etwas wie dieses, aber es hat nicht funktioniert:
defmodule Mix.Tasks.Users.List do
use Mix.Task
use Mix.Config
use Ecto.Repo, otp_app: :app
@shortdoc "List active users"
@moduledoc """
List active users
"""
def run(_) do
import Ecto.Query, only: [from: 1]
Mix.shell.info "=== Active users ==="
query = from u in "users"
sync = all(query)
Enum.each(users, fn(s) -> IO.puts(u.name) end)
end
end
Das gibt mir die folgende Ausgabe, wenn ich mischen starten users.list:
** (ArgumentError) repo Mix.Tasks.Users.List is not started, please ensure it is part of your supervision tree
lib/ecto/query/planner.ex:64: Ecto.Query.Planner.query_lookup/5
lib/ecto/query/planner.ex:48: Ecto.Query.Planner.query_with_cache/6
lib/ecto/repo/queryable.ex:119: Ecto.Repo.Queryable.execute/5
Jede Idee oder andere Art und Weise um dieses Problem zu lösen?
Danke. Das war was ich vermisste! ! –
Der Wert von 'use_started' wurde seit Ecto 2.0 von 1 auf 2 geändert. Das zweite Argument ist eine Keyword-Liste. Wir sollten die Zeile 'sure_started (repo)' in 'secure_started (repo, [])' ändern. – Tsutomu
@Tsutomu danke, ich habe den Code aktualisiert – splatte