【问题标题】:Erlang workflowErlang 工作流程
【发布时间】:2011-06-27 18:17:45
【问题描述】:

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

【问题讨论】:

    标签: erlang workflow erlang-otp


    【解决方案1】:

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

    当您构建了一个开发版本后,您可以执行命令make console,其定义如下:

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

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

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

    【讨论】:

      【解决方案2】:

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

      http://www.chicagoboss.org/

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

      【讨论】:

        【解决方案3】:

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

        就像运行sync:go().一样简单

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-03-01
            • 2013-10-05
            • 1970-01-01
            • 2020-07-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多