使用Easy way of loading projects with rebar dependencies的答案,现在可以自动解决依赖关系,但不会自动加载它们。
那么,如何自动加载我的ebin和/ deps / * / bin路径中的所有模块?这样,在使用Erlang shell选项卡完成时它们就可用了,这大大加快了我的开发过程。
我的解决方案基于Adam Lindberg的优秀答案:https://gist.github.com/1131312它只会自动加载项目模块,因此在erl启动时几乎没有延迟。
答案 0 :(得分:9)
这个片段可以解决问题:
[code:ensure_loaded(list_to_atom(filename:rootname(filename:basename(F))))
|| P <- code:get_path(), F <- filelib:wildcard(P ++ "/*.beam")].
将它作为一行放在~/.erlang
文件中(包括点:.
),它将在启动任何 Erlang shell时执行。但要注意,它的速度非常慢!
» time erl -noshell -s init stop
erl -noshell -s init stop 0.11s user 0.02s system 11% cpu 1.143 total # Without
» time erl -noshell -s init stop
erl -noshell -s init stop 7.31s user 1.08s system 88% cpu 9.480 total # With
答案 1 :(得分:4)
如果你产生了这个过程,你将获得一个非常快的开始。
LP = fun() -> [code:ensure_loaded(list_to_atom(filename:rootname(filename:basename(F)))) || P <- code:get_path(), F <- filelib:wildcard(P ++ "/*.beam")] end.
spawn(LP).
〜/ .erlang文件中的