2

这是我最初几个小时的 Erlang 实验。所以请温柔一点。

  • 我检查了一个项目(https://github.com/wooga/eredis
  • 安装钢筋
  • 编译模块(beam 文件进入 ebin)
  • 启动 erl -pa ./ebin
  • 输入 eredi - 并点击标签

此时没有显示任何内容,而所有其他模块都是自动完成的。所以我(合理地)假设模块梁文件没有被加载 - 导致我对路径等进行各种毫无结果的调查。

但是代码已经加载,只是没有自动完成。

1> {ok,C} =  eredis:start_link().
{ok,<0.35.0>}
2> eredis:q(C,["SET","foo","bar"]).
{ok,<<"OK">>}
3> eredis:q(C,["GET","foo"]).                       
{ok,<<"bar">>}

太好了,但我真的很想自动完成工作。有没有办法让它工作?例如,在 Zsh 中,我必须执行 rehash 才能显示新的路径项 - 我需要在这里执行类似的操作吗?

4

1 回答 1

2

您需要确保模块已加载到 shell 中,将其添加到路径中,-pa只告诉 VM 在尝试加载模块时在哪里查找模块。有几种加载模块的方法

  • 在应该加载的模块中调用一个函数(所以在eredis:start_link()调用之后你就可以tab-complete eredis)
  • 显式加载模块l(Module)
  • 以编程方式:code:load_file(Module)

在路径中加载所有 erlang 模块非常有用!

于 2013-08-02T14:50:02.473 回答