Как на языке Ballerina выполнить горячую перезагрузку кода через `bal run` без перезапуска сервера?

Я могу запустить сервер разработки локально через bal run и взаимодействовать со своим API через Swagger в VSCode (очень приятно!), однако кажется, что мне нужно убить и перезапустить сервер, чтобы отразить изменения кода?

Есть ли более разумный способ автоматической горячей перезагрузки изменений кода и обновления сервера?

Во-первых, я ожидал, что поведение по умолчанию будет отражать изменения кода.

Затем я решил, что могу подписаться с помощью опции bal run, но, глядя на bal run --help, я не увидел ни одной --debug или аналогичной опции?

Официального способа сделать горячую перезагрузку не существует, но вы можете написать для этого bash-скрипт или скрипт балерины.

Dulaj Dilshan 28.03.2024 16:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В настоящее время официальной поддержки этому нет. Но иногда я использую для этого сценарий оболочки.

#!/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 вместо сценария оболочки.

Dulaj Dilshan 28.03.2024 17:04

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