【问题标题】:Elixir script with dependency具有依赖关系的 Elixir 脚本
【发布时间】:2016-04-11 02:54:50
【问题描述】:

我正在编写一个快速的 Elixir 脚本,我想使用 csv library 依赖项。创建一个新的混合项目只是为这个库添加依赖项管理似乎有点矫枉过正。你会推荐什么?你会为一个带有依赖项的简单脚本走混合项目路线吗?

编辑

注意:我不是在问如何全局安装和访问依赖项。问题是,“你会走混合项目路线……”建议的方法是什么?

【问题讨论】:

  • +1 因为我想知道是否有一种我没见过的简单方法。但是,克隆和/或下载库的源代码似乎与创建混合项目并让它为您检索库的工作一样多或更多。
  • 一种解决方法(我已经考虑过但我自己还没有完成)是为这些一次性保留生成的混合项目,并在需要时添加依赖项。一段时间后,它会包含您继续使用的那些。
  • @CoderDennis:是的,我同意。创建一个新的混音项目并不难。但是,我想知道这是否是简单脚本的建议方法。来自 Ruby 背景,我编写了许多只是一个文件的小实用程序脚本。每个人都有一个项目似乎有点过头了。
  • @HenrikN:这是个好建议。我所有的实用程序脚本都可以是单个项目的一部分。它仍然缺乏 Ruby 中快速的、单文件实用程序脚本的可移植性。不过,这可能只是一种情绪反应。 :) 也许这没什么大不了的。
  • 我也想念 Elixir 中的 Ruby 便利(比如这个)——它可能会令人沮丧,但我想它也让我们免于一些痛苦。仍然不确定我们是否能更好地平衡;)我很确定我已经看到 Eric(Hex 人)在某个地方讨论过这个(是否允许在没有完整项目的情况下使用依赖项),但我现在找不到它,我不记得他说了什么,恐怕……

标签: elixir


【解决方案1】:

使用Code.require_file/2 可以做到这一点

例如考虑一下:

# foo.ex
defmodule Foo do
  def bar, do: "Barrrr"
end

然后,在同一个目录中,放置你的脚本:

# main.exs
Code.require_file("foo.ex", __DIR__)

Foo.bar()
|> IO.puts()

您可以对其进行调整以包含您手动放入目录中的其他一些第 3 方文件,但这不是很惯用!你不太可能看到像上面这样的东西(事实上,我只是编造的)。如前所述,您通常最好坚持使用 Mix 项目(也许进行自定义混合任务)。

请记住,Elixir 首先是一个虚拟机(Erlang VM),所以它总是带着那个“包袱”。对于可移植性是重中之重的快速一次性脚本,Elixir 可能不是最佳选择。我可能会使用 Python 来编写简单的脚本(因为它不会携带自己的包袱,而是假设您的计算机拥有所有这些东西)或 Go(因为它会将任何复杂性编译成单个可执行文件)。

【讨论】:

    【解决方案2】:

    走混合项目路线。快速而肮脏的脚本有办法发展成更大的项目。

    【讨论】:

    • 我想我正朝着这个方向发展。
    猜你喜欢
    • 2016-07-31
    • 1970-01-01
    • 2013-11-23
    • 2021-09-29
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多