2011-02-15 91 views
9

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

回答

3

在Etorrent,我使用的一个小窍门,你可能会喜欢:

当你建立了一个开发版本,你可以执行命令make console其具有以下定义:

console: 
    dev/etorrent-dev/bin/etorrent console \ 
      -pa ../../apps/etorrent/ebin 

基本上,它使用大多数东西的发布版本,但覆盖应用程序ebin在通常构建软件的位置。现在,运行一个控制台,您可以编辑您的代码,运行make(我在Emacs中点击一个组合键),修复错误,再次运行make等等。当您对更改感到满意时,可以进入控制台(erlang shell)并执行l(ModuleToLoad),此时正在运行的系统会获取注入的新代码。 OTP将自动获取热部署代码更改并更改进程。从本质上讲,只有在处理代码时才需要重启。

如今,我们也进行了测试,因此您可以在etorrent中执行make test,让测试框架在注入之前在您新形成的代码上运行,如果您希望更多地保证新代码的正常工作。

3

芝加哥老大你只需点击“刷新”,在您的网页浏览器:

http://www.chicagoboss.org/

即使你的目标不是网络的发展,这可能是学习二郎比更有趣的方式您目前的工作流程CB在浏览器中正确显示编译和运行时错误。

3

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

这是因为运行sync:go().

看看this rebar template一个更好的例子一样简单。

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

0

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

我最近搬到了rebar3,发现它比螺纹钢更容易操作。