Когда код пишется на чуть менее распространённом чем ruby/python/php/js языке, встаёт задача arbitrary server restart on file change (рестарта произвольного сервера или процесса при изменении файла на диске).
Для JS есть замечательный grunt-contrib-watch, но если с ним влом разбираться, на помощь приходит inotify-tools (Linux) или fswatch (OS X / Mac). При этом для fswatch есть готовое решение.
Fswatch ставится через brew install fswatch
и запускается вот так:
fswatch -o file.ext | xargs -n1 './restart_server.sh'
Лучше, конечно сделать небольшой файлик run_server.sh:
#!/bin/bash
bash restart_server.sh
fswatch -o file.ext | xargs -n1 './restart_server.sh'
А в restart_server.sh положить:
#!/bin/bash
server_file="file.ext"
start_serv_cmd="nohup interpreter_command $server_file > server.out &"
echo $start_node_cmd
echo 'There is a change in file, restarting node'
ps | grep "[i]nterpreter $server_file$" | awk '
{
if($1!="") {
print $1;
system("kill " $1)
}
}'
echo "starting server"
eval "$start_serv_cmd"
После этого при изменении файла file.ext, сервер сам будет запускать команду interpreter_cmd file.ext.