Desidero visualizzare i dati dal mio DB tramite Ecto in un'attività di missaggio personalizzata. Come posso ottenere il repository Ecto nel mio compito (o avviarlo)?Come ottenere dati da Ecto in un'attività di mix personalizzato
Ho provato qualcosa di simile, ma non ha funzionato:
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
Questo mi darà il seguente output quando lancio mescolare 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
qualsiasi idea o altro modo risolvere questo problema?
Grazie. Questo era quello che mi mancava! ! –
L'arità di 'ensure_started' è stata modificata da 1 a 2 da Ecto 2.0. Il secondo argomento è un elenco di parole chiave. Dovremmo cambiare la riga 'ensure_started (repo)' a 'ensure_started (repo, [])'. – Tsutomu
@Tsutomu grazie, ho aggiornato il codice – splatte