启动 Ecto 进行 Mix 任务(Mix.EctoSQL.ensure_started 不再工作)

lei*_*ifg 3 elixir ecto

我知道这个问题已经被问过,而且答案总是个人的答案。

然而,我已经看到了Mix.EctoSQL.ensure_started很多提及,这似乎是公认的方法。

然而,ecto_sql 3.1.2此功能已被完全删除(请参阅提交)。我不清楚为什么它被删除。

总结一下这个问题:是否有一种可接受的方法来启动 ecto(存储库)并确保日志记录后端按预期工作,而无需编写太多自定义代码?

小智 5

目前接受的方法是

Mix.Task.run("app.start")
Run Code Online (Sandbox Code Playgroud)

Mix.EctoSQL.ensure_started是一个私有函数,不适合在 EctoSQL 之外使用。Jose 推荐了这种新方法来代替它。

应该注意的是,这将启动您的整个应用程序(包括后台工作人员或您的应用程序通常会启动的任何其他应用程序),因此您可能需要修改文件application.ex以在混合任务启动时不启动这些应用程序。