Chcę wyświetlać dane z mojego DB przez Ecto w niestandardowym poleceniu mieszania. Jak mogę uzyskać repozytorium Epoo w moim zadaniu (lub uruchomić je)?Jak uzyskać dane z Ecto w zadaniu niestandardowego miksu
Próbowałem coś takiego, ale to nie działa:
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
To da mi następujące dane wyjściowe, kiedy uruchomić mieszać 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
Każdy pomysł lub inny sposób by rozwiązać ten problem?
dziękuję. Tego właśnie mi brakowało! ! –
Zasób 'ensure_started' został zmieniony z 1 na 2, ponieważ Ecto 2.0. Drugim argumentem jest lista słów kluczowych. Powinniśmy zmienić linię 'ensure_started (repo)' na 'ensure_started (repo, [])'. – Tsutomu
@ Dzięki Tsutomu, zaktualizowałem kod – splatte