【问题标题】:Start Ecto for Mix task (Mix.EctoSQL.ensure_started not working anymore)为混合任务启动 Ecto(Mix.EctoSQL.ensure_started 不再工作)
【发布时间】:2019-05-15 00:08:42
【问题描述】:

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

但是我看到Mix.EctoSQL.ensure_started 提到了很多,似乎这是公认的方式。

但是,ecto_sql 3.1.2 已完全删除此功能(请参阅commit)。我不清楚它为什么被删除。

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

【问题讨论】:

  • 在您链接到的提交中引入了Ecto.Migrator.with_repo/2 作为替代品。您能解释一下为什么不符合您的要求吗?
  • 我的问题是关于在 Mix 任务中启动 Ecto,它与 Ecto 的迁移器无关。引用的提交中有两个更改。我的问题仅与删除 ensure_started 有关

标签: elixir ecto


【解决方案1】:

目前公认的做法是使用

Mix.Task.run("app.start")

Mix.EctoSQL.ensure_started 是一个私有函数,不打算在 EctoSQL 之外使用。这种新方法是用recommended by Jose 代替它。

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

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2019-05-13
    • 2016-11-08
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2017-05-30
    • 2018-05-29
    相关资源
    最近更新 更多