reload(Module) ->
case code:purge(Module) of
true -> ?lwarn("Process killed as result of reloading: ~p",[Module]);
false -> ok
end,
code:load_file(Module).
Rustyio is indeed a bit complicated for casual (sideproject) use. Most methods focus on rebar3. For erlang.mk users, the reload.mk plugin works well. Just add it in the Makefile deps, run programs with make run RELOADABLE=1 and reload with make reload .
4条答案
按热度按时间cedebl8k1#
我一直都在使用rebar。在rebar.config中,我有
我使用一个.erlang文件,通常放在src/.erlang中,并包含以下两行
现在,每当我保存一个文件时,它就会被重新加载。我看不出有什么理由不适合Cowboy
hgtggwj02#
您可以合并relx和rusty/sync进行代码重新加载,同时仍然运行Erlang发行版。它的工作原理就像charm一样,并且有关于如何进行这样的设置的教程。
jtoj6r0c3#
看一看p6hot_deploy.erl
它每秒扫描一次文件系统,寻找日期发生变化的模块,然后重新加载它们。
因此您的流程将是:编辑,保存,制作
此模块将查看文件更改并强制重新加载
这不是用释放和东西花哨的OTP方式,而是一个更低级别的简单代码交换。
注意:你必须改变它来为你工作,因为它依赖于我的日志宏和东西,但是你应该通过查看它来获得要点。
关键部分是这个函数:
它尝试以安全的方式在新代码中循环。
oyjwcjzk4#
Rustyio is indeed a bit complicated for casual (sideproject) use. Most methods focus on rebar3.
For erlang.mk users, the reload.mk plugin works well. Just add it in the Makefile deps, run programs with
make run RELOADABLE=1
and reload withmake reload
.