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

У меня есть приложение для арматуры под названием pingpong. После rebar generate я запускаю упакованное приложение с помощью ./rel/pingpong/bin/pingpong start. Проблема в том, что виртуальная машина erlang всегда имеет имя -name [email protected], но я хочу запустить приложение один раз с именем [email protected], а затем снова с именем [email protected].

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


person Svetlin Mladenov    schedule 19.11.2012    source источник


Ответы (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.

person Community    schedule 19.11.2012
comment
Это не работает. NAME_ARG используется только для stop, restart, attach. Но для start или console используется имя из vm.args, а NAME_ARG игнорируется. - person Svetlin Mladenov; 20.11.2012