在ruby脚本中,我可以这样做:
require 'some-gem'
SomeGem.do_something!
如何在没有创建全新混合项目的情况下在elixir exs
脚本中执行类似操作?到目前为止,我已经搜索了google的方法,并阅读了一些博客帖子(such as this),但无法找出正确的(简单的“简单”)方式。
具体来说,我想在我的灵丹妙药脚本中使用HTTPoison
。
答案 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软件包。