Ускорение цикла Erlang Edit, Compile, Run/Debug.

Каков самый быстрый способ отредактировать приложение Erlang, скомпилировать код и увидеть результат? Желательно прыгать в оболочку Erlang на последнем шаге.

Мои текущие настройки новичка:

  • Сценарий, который компилирует приложение и запускает оболочку erl.
  • Затем я набираю application:start(foo).
  • Когда я исправляю опечатку, я перекомпилирую модуль с помощью c('module') и перезапускаю приложение.

Есть ли более быстрый способ? КСТАТИ. мой любимый редактор — Emacs.


person Ward Bekker    schedule 27.04.2011    source источник


Ответы (4)


Вот моя установка:

  • Во время разработки я держу оболочку Erlang открытой в отдельном окне терминала.
  • Я начинаю компиляцию из редактора (используя комбинацию клавиш) или просто набрав make в исходном каталоге.
  • После компиляции я загружаю сразу все измененные модули, набрав l() в оболочке Erlang. Вы можете найти этот и некоторые другие полезные макросы здесь: http://www.snookles.com/erlang/user_default.erl

Редко возникает необходимость перезапустить все приложение Erlang. Повторная загрузка измененных модулей является более распространенным вариантом использования, и обычно этого достаточно, чтобы применить ваши изменения.

Что касается запуска приложения: если ваше приложение зависит от других приложений, application:start() завершится ошибкой, пока вы не запустите все зависимости. Из-за этого обычно пишут вспомогательную функцию <your-app-name>:start(). Вот пример. Еще одна полезная функция — <your-app-name>:stop().

При использовании всех этих методов рабочий процесс будет выглядеть следующим образом:

  • Запустите оболочку Erlang и оставьте ее открытой; тип<your-app-name>:start().
  • Вносить изменения; запустить компиляцию; введите l() в оболочке Erlang.
  • Когда изменения требуют перезапуска приложения, введите <your-app-name>:stop(), <your-app-name>:start().
person alavrik    schedule 27.04.2011

Вы можете рассмотреть арматурный стержень в качестве инструмента построения . make:all/0 и весь модуль make тоже может помочь. Чтобы явно перезагрузить модуль из оболочки, вы можете использовать l(Module). Наконец, вас также может заинтересовать создание выпуска Erlang для "обертывания" всех ваши приложения Erlang.

person Roberto Aloi    schedule 27.04.2011

редактирование и компиляция выполняются в среде IDE (Eclispe с erlide), которую я использую.

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

Для перезагрузки измененных исходников и затем скомпилированных бинов я использую reloader от mochiweb. Reloader наблюдает за каталогом bin и, если есть изменения, загружает модули и запускает тесты eunit, если они у вас есть внутри.

Пример:

erl +A 5 +K true -name @127.0.0.1 -pa $PWD/ebin $PWD/test $PWD/deps/*/ebin -boot start_sasl -s reloader -s панель инструментов -s

person Ulf    schedule 28.04.2011

то, что вы также можете попробовать, это erlbuild. Erlbuild — это простое приложение, которое ищет в каталоге src измененные исходные файлы и, если находит какие-то файлы, компилирует и снова загружает модули. После загрузки модулей erlbuild запускает тесты модулей.

Вы можете найти проект по адресу: https://github.com/ulfa/erlbuild.

~ Ульф

person Ulf    schedule 29.04.2011