Я могу запустить сервер разработки локально через bal run и взаимодействовать со своим API через Swagger в VSCode (очень приятно!), однако кажется, что мне нужно убить и перезапустить сервер, чтобы отразить изменения кода?
Есть ли более разумный способ автоматической горячей перезагрузки изменений кода и обновления сервера?
Во-первых, я ожидал, что поведение по умолчанию будет отражать изменения кода.
Затем я решил, что могу подписаться с помощью опции bal run, но, глядя на bal run --help, я не увидел ни одной --debug или аналогичной опции?





В настоящее время официальной поддержки этому нет. Но иногда я использую для этого сценарий оболочки.
#!/bin/bash
DIRECTORY_TO_WATCH = "<package-directory>" # provide the absolute directory
run_command() {
# Get the previous jvm PID and kill it
prevJPID=$(jps | grep '$_init' | awk '{print $1}')
kill -9 $prevJPID >/dev/null 2>&1
wait $prevJPID 2>/dev/null
# Run the command in the background and get its PID and Jvm PID
bal run $DIRECTORY_TO_WATCH &
PID=$!
sleep 2
JPID=$(jps | grep '$_init' | awk '{print $1}')
echo "PID of the command: $PID"
echo "PID of jvm process: $JPID"
}
run_command
fswatch -0 $DIRECTORY_TO_WATCH | while IFS= read -r -d "" file; do
if [[ "$file" == *.bal ]]; then
echo "File changed $file"
kill -9 $PID >/dev/null 2>&1
wait $PID 2>/dev/null
run_command
fi
done
Здесь вам необходимо указать абсолютный путь к DIRECTORY_TO_WATCH (например, «/Users/dulaj/Desktop/temp/servo»).
Кроме того, вам необходимо дать +x разрешение на доступ к файлу. с помощью следующей команды.
chmod +x <script-name>
Для этого вы можете написать сценарий Ballerina вместо сценария оболочки.
Официального способа сделать горячую перезагрузку не существует, но вы можете написать для этого bash-скрипт или скрипт балерины.