2016-06-07 89 views
6

在Ruby脚本,我可以简单地这样做:如何在一个简单的灵药脚本中加载一个灵药库?

require 'some-gem' 

SomeGem.do_something! 

我该怎么办,而无需创建一个全新的混合项目灵药exs脚本类似的东西?到目前为止,我已经搜索了谷歌的方式来做到这一点,并阅读了一些博客文章(such as this),但无法找到一个适当的(简单的)方法来做到这一点。

具体而言,我想在我的elixir脚本中使用HTTPoison

回答

3

在Elixir中没有像Ruby那样的全局包安装。尽管在技术上可能将依赖关系编译为.beam文件,并将它们添加到脚本的加载路径中(如链接的文章所做的那样),但如果您想要的行为与Ruby相似,我会建议您使用mix run运行加载了所有项目依赖关系的任意脚本。

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

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

执行它你甚至可以创建一个封装外壳脚本,通过调用my-elixir script.exs自动完成上述操作。

(我经常在使用像HTTPoison和/或Poison这样的常见依赖关系的StackOverflow测试代码的同时测试代码。)

1

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

我想你必须明确添加HTTPoison编译在exs脚本顶部的路径。

Elixir提供了一个API Code.expand_path来预先添加到Erlang VM代码路径列表开头的路径。你可以找到更多关于API here的描述。