Elixir - 无法在2个Deps之间获得Record.extract

时间:2013-11-23 10:00:42

标签: rabbitmq record elixir

我是Elixir和Erlang的新手,所以我可能会选择一些基本的东西但是...

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

当混合deps.get时,它会卡住两次。第一个问题是dorc的exrabbit在elixir 0.10.2-dev上工作,而我正在运行0.11.2 ... Soooo我只是想试着强迫它,以防它起作用。也许这就是问题所在:p

第二个问题来自于我强迫deps接受elixir更高。

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中。这对我来说很有意义。

我想我必须查看elixir补丁说明,如果Record.extract上有更新,这意味着这样的事情......我有什么遗漏吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

Elixir中存在一个错误,当我们转移到新的构建样式时,包含不起作用。请尝试Elixir master,修复此错误(对不起烦恼!)。

答案 1 :(得分:0)

我不确定你为什么会收到这个错误,因为这似乎是正确的。我刚刚使用cthulhuology/Amqp包遇到了类似的问题,这就是我修复它的方法:https://github.com/cthulhuology/Amqp/pull/1

然而,exrabbit似乎主要正确地做到了。不确定,但希望PR可以提供帮助,因为它只是为我解决了一个相同的错误。