Erlang shell的神秘行为

时间:2012-08-04 15:29:44

标签: erlang rebar erlang-shell

我在Rebar下捆绑了一个Erlang应用程序(现在只有几个库模块)。目录结构如下所示:

MyProject  
- apps  
-- myapp  
--- ebin  
--- src  
--- yada   
- rebar  
- rebar.conf  

MyProject $ ./rebar编译按预期响应。

我打开了Erlang shell(MyProject $ erl -pa apps / * / ebin myapp),可以很好地执行导出函数。

现在我编辑源文件,添加导出的函数,然后重新编译。但是,whaaa ---当我尝试执行我的新导出函数时,我得到一个错误---未定义的函数。我在Erlang shell中执行myAppModule:module_info / 0。它没有列出我刚添加到源文件中的新函数,也没有列出我对其他函数所做的更改。

我删除了相关的* .beam文件并重新编译。仍然看不到我的变化。

但是,现在我从Erlang shell中获取q()并重新输入。你知道什么!一切正常,包括我的新功能。

为什么会这样?

非常感谢,

LRP

1 个答案:

答案 0 :(得分:5)

你如何重新编译?从shell或如何?

请注意,如果您重新编译执行erlang的“外部”文件,那么您将明确地必须在shell中重新加载模块(带有l(myAppModule).)。如果从shell重新编译(使用c(myAppModule).),则将重新编译并重新加载模块,但.beam文件不会放在ebin目录中,但将在当前工作中。目录