erlang具备动态加载代码的能力。在开发过程当中通常都让代码自动编译加载,这样开发起来很爽。 git
最有名项目应该是sync了地址:https://github.com/rustyio/sync
最近在用rebar3 构建项目。并且又用到了erlydtl,在用sync自动编译dtl的时候出现了问题。
erlydtl 的编译配置是这样的。github
{erlydtl_opts, [ {doc_root, "priv/templates"}, {outdir, "ebin"}, {compiler_options, [report, return, debug_info]}, {source_ext, ".dtl"}, {module_ext, "_view"} ]}
可是sync编译出来文件结尾总是 _dtl.beam 而不是配置 {module_ext, "_view"} 应该产生的_view.beam,并且生成的beam的位置也不对。工具
只好翻源码,发现sync并不支持erlydtl_opts的配置,*_dtl.beam 命名是写死的。。sync动态编译dtl的这条路看来是走不通了。
而后翻rebar3 插件。发现了rebar3_auto 插件。简单建了个工程作实验没问题。可是当我在项目中天剑cowboy的后。rebar3_auto 只编译第一次。而后就失灵了。(并且inotify_wait 进程已经再也不了。。 ),google后发早就有人爆出这个问题了https://github.com/tsloughter...,看来rebar3_auto 如今还无法用。google
接着找到active,可是过小众了,主要支持的mad。对rebar也就是兼容。试了一下没成功也不想深刻研究它。插件
到这的结果就是用rebar3 我还没找到一个好的reload的工具。。。苦逼啊debug