6

使用Easy way of loading projects with rebar dependencies 中的答案,现在会自动解决依赖关系,但不会自动加载它们。

那么,如何自动加载我的 ebin 和 /deps/*/bin 路径中的所有模块?这样,在使用 Erlang shell 选项卡补全时它们就可用,这大大加快了我的开发过程。

我的解决方案基于 Adam Lindberg 的出色回答https ://gist.github.com/1131312它只会自动加载项目模块,因此 erl 启动几乎没有延迟。

4

2 回答 2

10

这个片段可以解决问题:

[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 
于 2011-08-03T13:15:43.990 回答
6

如果您生成该过程,您将获得一个非常快速的启动。

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 文件中

于 2013-08-04T07:33:30.897 回答