erl не выполняет автозаполнение кода, загруженного с помощью -pa

Это моя первая пара часов экспериментов с Erlang. Так что будьте нежны, пожалуйста.

  • Я проверил проект (https://github.com/wooga/eredis)
  • Установленная арматура
  • Скомпилировал модули (beam файлы ушли в ebin)
  • Загорелся erl -pa ./ebin
  • Набрал эреди - и нажал Tab

В этот момент ничего не отображалось, тогда как все остальные модули заполнялись автоматически. Поэтому я (обоснованно) предположил, что файлы луча модуля не были загружены - привели меня ко всяким бесплодным исследованиям путей и т. д.

Но код был загружен, он просто не заполнялся автоматически.

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 для отображения новых элементов пути — нужно ли мне выполнять что-то подобное здесь?


person bryan hunt    schedule 02.08.2013    source источник


Ответы (1)


Вам нужно убедиться, что модуль загружен в оболочке, добавление его к пути с -pa просто сообщает виртуальной машине, где искать модули при попытке их загрузки. Существует несколько способов загрузки модуля

  • Вызовите функцию в модуле, который должен быть загружен (так что после выполнения вызова eredis:start_link() вы сможете выполнить табуляцию erdis)
  • Явно загрузить модуль с помощью l(Module)
  • Программно: code:load_file(Module)

Загрузить все модули erlang по пути очень полезно!

person johlo    schedule 02.08.2013