Как запустить приложение арматуры дважды или более с разными именами?

У меня есть приложение для арматуры под названием pingpong. После rebar generate Я запускаю упакованное приложение, используя ./rel/pingpong/bin/pingpong start, Проблема в том, что Erlang VM всегда имеет имя -name pingpong@127.0.0.1 но я хочу запустить приложение один раз с именем ping@127.0.0.1 а потом снова с именем pong@127.0.0.1,

Я знаю, что имя остается в./rel/pingpong/releases/VSN/vm.config, но я не хочу вручную редактировать файл перед запуском приложения. Я хочу что-то вроде pingpong start -name=ping, Есть ли способ добиться этого?

1 ответ

Решение

Вы можете отредактировать скрипт bin/pingpong примерно так:

Вместо

NAME_ARG=`egrep -e '^-s?name' $RUNNER_ETC_DIR/vm.args`

задавать:

NAME_ARG=${NAME_ARG:-`egrep -e '^-s?name' $RUNNER_ETC_DIR/vm.args`}

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

NAME_ARG="-name myname@localhost" bin/pingpong start

Для консоли / команды запуска:

Найдите строку в вашем скрипте запуска:

CMD="$BINDIR/erlexec -boot $RUNNER_BASE_DIR/releases/$APP_VSN/$BOOTFILE -mode embedded -config $CONFIG_PATH -args_file $VMARGS_PATH"

Добавьте $NAME_ARG в конце:

 CMD="$BINDIR/erlexec -boot $RUNNER_BASE_DIR/releases/$APP_VSN/$BOOTFILE -mode embedded -config $CONFIG_PATH -args_file $VMARGS_PATH $NAME_ARG"

И не забудьте удалить -name NAME из ваших файлов.args

Другие вопросы по тегам