Elixir的新手,但到目前为止爱它:)
我的很多混音任务都依赖于HTTPotion。
我的mix.exs
文件被声明为
def application do
[
applications: [:logger, :cowboy, :plug, :httpotion, :poison],
mod: {BiddingAgent, []}
]
end
因此自动调用HTTPotion.start。但是,当我运行需要调用http请求的mix campaign.list
之类的任务时,我必须手动调用HTTPotion.start
。
确保为我的混音任务启动正确的流程的惯用方法是什么?
谢谢!
答案 0 :(得分:14)
你是对的,当你在启动脚本之外启动应用程序时,你需要手动启动依赖项。
我更喜欢直接调用status = 1
模块而不是每个依赖项。
将以下代码添加到任务模块中的Application
函数。
run
如果您有任何疑问,可以查看documentation
编辑: 描述的做法正在Ecto中使用
模块包含在mix任务中,它提供了ensure_started方法。