您如何组织erlang工作流程?我现在正在学习一些Erlang,我正在使用Rebar,在每次编辑后重新编译,重建和重新启动整个版本(我试图保持OTP')。我很确定有一种更聪明的方法可以做到这一点。
答案 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,您只需在网络浏览器中点击“刷新”:
即使您的目标不是网络开发,也可能是学习Erlang的一种方式,它比您当前的工作流程更有趣。 CB漂亮地在浏览器中打印编译和运行时错误。
答案 2 :(得分:3)
我一直在使用Sync来避免可怕的编辑/重新编译/重启循环。它会监视源文件的更改,然后重新编译并重新加载已更改的模块。它会向控制台输出错误和警告,并将它们发送到notify-send / growl(如果可用)。
就像运行sync:go().
请查看this rebar template以获得更好的示例。
如果您正在群集上进行开发,另一个很棒的功能是同步的“补丁模式”。使用“补丁模式”,每次同步成功编译模块时,它会将编译后的代码发送到连接到集群的每个节点并重新加载模块!
答案 3 :(得分:0)
为了在每次编辑时自动重新加载src文件,您可以在rebar3中尝试自动插件。
我最近搬到了rebar3,发现与螺纹钢相比,它更易于使用。