0

我是 Elixir 和 Erlang 的新手,所以我可能跳过了一些基本的东西,但是......

我正在尝试在 Elixir 中使用 RabbitMQ,并使用基于 Elixir 的库 (d0rc/exrabbit)

混合 deps.get 时,它会卡住两次。第一个问题是 dorc 的 exrabbit 在 elixir 0.10.2-dev 上运行,而我在 0.11.2 上运行......所以我只是想尝试强制它,以防万一它有效。也许这就是这里的问题:p

一旦我强迫部门接受长生不老药更高,第二个问题就出现了。

mix deps.get
* Compiling exrabbit
Compiled lib/exrabbit/behaviour.ex
Compiled lib/exrabbit/supervisor.ex
== Compilation error on file lib/exrabbit.ex ==
could not compile dependency exrabbit, mix compile failed. You can recompile this dependency with `mix deps.compile exrabbit` or update it with `mix deps.update exrabbit`
** (RuntimeError) error parsing file /Users/-----/dev/testmongo/_build/shared/lib/rabbit_common/include/rabbit_framing.hrl, got: {:error, :enoent}
    /private/tmp/elixir-PzZu/elixir-0.11.2/lib/elixir/lib/record/extractor.ex:54: Record.Extractor.read_file/1
    /private/tmp/elixir-PzZu/elixir-0.11.2/lib/elixir/lib/record/extractor.ex:32: Record.Extractor.retrieve_record/2
    deps/exrabbit/lib/exrabbit.ex:10: (module)
    deps/exrabbit/lib/exrabbit.ex:9: (file)

有问题的代码如下:

defmodule Exrabbit.Framing do
 defrecord :'P_basic', Record.extract(:'P_basic', from_lib: "rabbit_common/include/rabbit_framing.hrl")
end

从我的角度来看,它似乎没有在正确的位置获取信息。

我检查并“rabbit_common/include/rabbit_framing.hrl”确实存在,但不在_build目录中,但在deps中。这对我来说很有意义。

我想如果 Record.extract 上有更新暗示这样的事情,我将不得不在 elixir 补丁说明中查找......我有什么遗漏的吗?

谢谢 !

4

2 回答 2

3

Elixir 中有一个错误,当我们迁移到新的构建风格时,include 不起作用。请尝试 Elixir 大师,这里修复了这个错误(抱歉给您带来麻烦!)。

于 2013-11-23T21:13:30.813 回答
0

我不确定您为什么会收到该错误,因为这似乎大部分是正确的。我刚才在使用cthulhuology/Amqp包时遇到了非常相似的问题,这是我修复它的方法:https ://github.com/cthulhuology/Amqp/pull/1

然而,exrabbit 似乎大部分都做得很好。不确定,但希望 PR 可以提供帮助,因为它刚刚为我解决了一个相同的错误。

于 2013-11-23T17:15:16.963 回答