Erlang工作流程

时间:2011-02-15 16:52:55

标签: erlang workflow otp

您如何组织erlang工作流程?我现在正在学习一些Erlang,我正在使用Rebar,在每次编辑后重新编译,重建和重新启动整个版本(我试图保持OTP')。我很确定有一种更聪明的方法可以做到这一点。

4 个答案:

答案 0 :(得分:3)

在Etorrent中,我正在使用你可能喜欢的小技巧:

构建开发版本后,可以执行具有以下定义的命令make console

console:
    dev/etorrent-dev/bin/etorrent console \
            -pa ../../apps/etorrent/ebin
基本上,它使用释放ebins来处理大多数事情,但覆盖应用程序ebin在你正常构建软件的位置。现在,运行控制台,您可以编辑代码,运行make(我在Emacs中点击组合键),修复错误,再次运行make等等。当您对更改感到满意时,您将进入控制台(erlang shell)并执行l(ModuleToLoad),此时正在运行的系统将获取注入的新代码。 OTP将自动获取热部署代码更改并更改进程。基本上,在处理代码时,您只需要很少重启。

现在,我们也有测试,因此您可以在etorrent中执行make test,以便在注入之前让测试框架在新形成的代码上运行,如果您想要更多保证新代码可以正常运行。

答案 1 :(得分:3)

使用Chicago Boss,您只需在网络浏览器中点击“刷新”:

http://www.chicagoboss.org/

即使您的目标不是网络开发,也可能是学习Erlang的一种方式,它比您当前的工作流程更有趣。 CB漂亮地在浏览器中打印编译和运行时错误。

答案 2 :(得分:3)

我一直在使用Sync来避免可怕的编辑/重新编译/重启循环。它会监视源文件的更改,然后重新编译并重新加载已更改的模块。它会向控制台输出错误和警告,并将它们发送到notify-send / growl(如果可用)。

就像运行sync:go().

一样简单

请查看this rebar template以获得更好的示例。

如果您正在群集上进行开发,另一个很棒的功能是同步的“补丁模式”。使用“补丁模式”,每次同步成功编译模块时,它会将编译后的代码发送到连接到集群的每个节点并重新加载模块!

答案 3 :(得分:0)

为了在每次编辑时自动重新加载src文件,您可以在rebar3中尝试自动插件。

我最近搬到了rebar3,发现与螺纹钢相比,它更易于使用。