如何在一个简单的灵药脚本中加载一个灵药库?
问题描述:
在Ruby脚本,我可以简单地这样做:如何在一个简单的灵药脚本中加载一个灵药库?
require 'some-gem'
SomeGem.do_something!
我该怎么办,而无需创建一个全新的混合项目灵药exs
脚本类似的东西?到目前为止,我已经搜索了谷歌的方式来做到这一点,并阅读了一些博客文章(such as this),但无法找到一个适当的(简单的)方法来做到这一点。
具体而言,我想在我的elixir脚本中使用HTTPoison
。
答
在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测试代码的同时测试代码。)
答
没有混合,这可能有点复杂,但可行。
我想你必须明确添加HTTPoison
编译在exs脚本顶部的路径。
Elixir提供了一个API Code.expand_path
来预先添加到Erlang VM代码路径列表开头的路径。你可以找到更多关于API here的描述。