erlang 动态编译和加载遇到的问题。

erlang具有动态加载代码的能力。在开发过程中一般都让代码自动编译加载,这样开发起来很爽。

最有名项目应该是sync了地址:https://github.com/rustyio/sync
最近在用rebar3 构建项目。而且又用到了erlydtl,在用sync自动编译dtl的时候出现了问题。
erlydtl 的编译配置是这样的。

{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 现在还没法用。

接着找到active,但是太小众了,主要支持的mad。对rebar也就是兼容。试了一下没成功也不想深入研究它。

到这的结果就是用rebar3 我还没找到一个好的reload的工具。。。苦逼啊

关键字:erlang, linux

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部