加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

elixir – 启动混合任务流程依赖项

发布时间:2020-12-13 20:09:16 所属栏目:百科 来源:网络整理
导读:Elixir的新手,但到目前为止爱它:) 我的很多混音任务都依赖于HTTPotion. 我的mix.exs文件是这样声明的 def application do [ applications: [:logger,:cowboy,:plug,:httpotion,:poison],mod: {BiddingAgent,[]} ] end 所以HTTPotion.start会自动调用.但是,当
Elixir的新手,但到目前为止爱它:)

我的很多混音任务都依赖于HTTPotion.

我的mix.exs文件是这样声明的

def application do
    [
      applications: [:logger,:cowboy,:plug,:httpotion,:poison],mod: {BiddingAgent,[]}
    ]
  end

所以HTTPotion.start会自动调用.但是,当我运行像mix campaign.list这样需要调用http请求的任务时,我必须手动调用HTTPotion.start.

确保为我的混音任务启动正确的流程的惯用方法是什么?

谢谢!

你是对的,当在启动脚本之外启动应用程序时,你需要手动启动依赖项.

我更喜欢直接调用Application模块而不是每个依赖项.

将以下代码添加到任务模块内的运行功能.

{:ok,_started} = Application.ensure_all_started(:httpotion)

如果您有任何疑问,可以查看documentation

编辑:
描述的做法正在Ecto中使用

> https://github.com/elixir-lang/ecto/blob/master/lib/mix/ecto.ex#L73
> https://github.com/elixir-lang/ecto/blob/df13b1c64f8edd128cec1316336b20f3153eafa3/lib/mix/tasks/ecto.migrate.ex#L67

模块包含在mix任务中,它提供了ensure_started方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读