If you need access to DB for you mix task - you needed to start your ecto repo manually. While we worked with ecto 2 we had ensure_started
function.
So custom CLI task with ecto 2 looks like
defmodule App.Task do
use Mix.Task
import Mix.Ecto
def run(args) do
repos = parse_repo(args)
Enum.each repos, fn repo ->
ensure_repo(repo, args)
ensure_started(repo, []) # was deleted from ecto 3
ensure_started
has been deleted from ecto 3. I tried a few approaches but they didn't work for me. Does anybody know a workaround for ecto 3?
Updated
as @starbelly mentioned ensure_started
has migrated to Mix.EctoSQL
so we need to add extra import Mix.EctoSQL
to make it work
defmodule App.Cli.Task do
import Mix.Ecto
import Mix.EctoSQL
def start_ecto do
repos = parse_repo([])
Enum.each(repos, fn repo ->
ensure_repo(repo, [])
{:ok, _pid, _apps} = ensure_started(repo, [])
end)
end
end