Ускорение цикла Erlang Edit, Compile, Run / Debug - PullRequest
8 голосов
/ 27 апреля 2011

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

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

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

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

Ответы [ 4 ]

12 голосов
/ 28 апреля 2011

Вот мои настройки:

  • Во время разработки я держу оболочку 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().
2 голосов
/ 28 апреля 2011

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

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

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

Пример:

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

2 голосов
/ 27 апреля 2011

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

1 голос
/ 29 апреля 2011

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

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

~ Ulf

...