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