diff --git a/.vscode/launch.json b/.vscode/launch.json index fbb9a47..e72992e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,8 +4,8 @@ "type": "ruby_lsp", "name": "Debug Rails", "request": "launch", - "preLaunchTask": "PKILL: /bin/dev", - "program": "${workspaceFolder}/bin/rails server --port 3000", + "preLaunchTask": "ASK_FOR_KILL_RAILS", + "program": "${workspaceFolder}/bin/rails server --port 3000 -b 127.0.0.1", }, ] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 3a55e5f..239e2c9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,4 +11,5 @@ "emmet.includeLanguages": { "erb": "html" }, + "debug.onTaskErrors": "abort" } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 4a35f59..32295b3 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,13 +2,15 @@ "tasks": [ { "type": "shell", - "label": "PKILL: /bin/dev", - "command": "kill -9 $(ss -tlnp | grep 3000 | grep -oP \"pid=\\K(\\d+)\" | head -n1)", - "detail": "Pkill previous Rails server", + "label": "ASK_FOR_KILL_RAILS", + "command": "${workspaceFolder}/bin/may_kill_dev.sh", + "detail": "ASK before killing the currently running Rails server", "presentation": { "showReuseMessage": false, - "reveal": "silent", - "close": true + "reveal": "always", + "close": true, + "panel": "dedicated", + "echo": false } } diff --git a/bin/may_kill_dev.sh b/bin/may_kill_dev.sh new file mode 100755 index 0000000..2292236 --- /dev/null +++ b/bin/may_kill_dev.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +PORT=3000 + +pid_rails=$(ss -tlnp | grep "$PORT" | grep -oP "pid=\K(\d+)" | head -n1) +if [[ -n $pid_rails ]]; then + echo "============================================================================" + echo "Rails already runs on port $PORT, You've asked for debugger on the same port." + echo "============================================================================" + echo -n "Do you to want to kill rails process in order to launch debugger: (y/N)?: " + read -n1 answer + case $(echo $answer | tr '[A-Z]' '[a-z]') in + y|yes) kill -15 $pid_rails ;; + *) echo " means NO"; exit 1 ;; + esac +else + echo "port $PORT is free for debugger, go on..." +fi +