9

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

4

4 回答 4

3

我一直在使用Sync来避免可怕的编辑/重新编译/重新启动循环。它监视源文件的更改,然后重新编译并仅重新加载更改的模块。它将错误和警告打印到控制台,并在可用时将它们发送到通知发送/咆哮。

就像跑步一样简单sync:go().

查看此钢筋模板以获得更好的示例。

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

于 2012-10-24T22:16:19.797 回答
3

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

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

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

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

现在,我们也有测试,所以make test如果你想更多地保证新代码可以工作,你可以在 etorrent 中执行,让测试框架在注入之前在你新形成的代码上运行。

于 2011-02-15T20:56:15.240 回答
3

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

http://www.chicagoboss.org/

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

于 2011-02-16T22:25:06.463 回答
0

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

我最近搬到了 rebar3,发现它比 rebar 更容易使用。

于 2017-06-08T08:05:44.153 回答