如何在简单的elixir脚本中加载elixir库?

时间:2016-06-07 12:38:53

标签: elixir

在ruby脚本中,我可以这样做:

require 'some-gem'

SomeGem.do_something!

如何在没有创建全新混合项目的情况下在elixir exs脚本中执行类似操作?到目前为止,我已经搜索了google的方法,并阅读了一些博客帖子(such as this),但无法找出正确的(简单的“简单”)方式。

具体来说,我想在我的灵丹妙药脚本中使用HTTPoison

3 个答案:

答案 0 :(得分:5)

在Elixir中没有像Ruby那样的全局包安装。虽然技术上可能将依赖项编译成.beam文件并将它们添加到脚本的加载路径(就像你链接到的文章那样),但如果你想要的行为有点类似于Ruby,我建议你使用mix run来运行任何加载了所有项目依赖项的脚本。

使用mix中指定的所有依赖项创建一个全局mix.exs项目,在任何.exs文件中编写代码(不必在同一文件夹中) ),并通过

执行
cd /path/to/mix/project && mix run /path/to/.exs

您甚至可以创建一个包装器shell脚本,只需调用my-elixir script.exs即可自动执行上述操作。

(我经常在StackOverflow上测试代码以获取答案时使用HTTPoison和/或Poison之类的常见依赖项。)

答案 1 :(得分:1)

如果没有混合,这可能有点复杂,但可行。

我认为您必须在exs脚本的顶部显式添加编译HTTPoison的路径。

Elixir提供了一个API Code.expand_path,用于预先添加Erlang VM代码路径列表开头的路径。您可以找到有关API here的更多说明。

答案 2 :(得分:-2)

通过使用erun,您可以虚拟安装全局Mix软件包。

https://github.com/s417-lama/erun