erlctl 0.1
Одна из основных задач при использовании какого-либо сервиса — это возможность контролировать этот самый сервис.
Крупные проекты решили эту задачу каждый сам для себя (см. ejabberdctl, rabbitmqctl, riak-admin). Проблема в таких решениях очевидна — они все «заточены» под один какой-то конкретно проект.
Jason Vantuyi решил, что пора реализовать такую возможность в виде библиотеки. И реализовал ее в библиотеке ErlCtl.
Предположим, ваша программа называется awesome. Создайте symlink на исполняемый файл erlctl под названием, скажем, awesomectl. И создайте в вашем проекте модуль под таким же названием, awesomectl.erl. Этот модуль должен кспортировать функции («команды»), принимающие два параметра: контекст, в которой функция вызывается, и список аргументов.
Например, создадим команду, которая будет выводить версию нашей программы:
version(always,[]) -> {ok,"Version: ~p",[0.1]}.Эта функция вернет success и версию нашей программы:
sh> awesomectl version Version: 0.1
Библиотека предлагает возможность указать различные контексты для выполнения команд (not_running, started, running и т.п.). Подробнее о них и о том, как пользоваться библиотекой, можно узнать в полноценном приложении, использующем эту библиотеку (полное описание команд для этого приложения можно найти здесь).
