Отладка Rails в Visual Studio Code при использовании Puma-dev

Придя из таких языков, как Swift и Objective-C, использование надлежащего отладчика, в котором мне не нужно редактировать код, чтобы записать что-то в журнал или приостановить выполнение, очень важно для быстрого отслеживания проблем. Итак — подумал я — мы используем puma-dev для запуска нашего Rails приложения во время разработки, это обычная настройка, и поэтому должны быть простые инструкции о том, как прикрепить отладчик Visual Studio Code к запущенному приложению. Но я не смог их найти. Но мне все же удалось скомпоновать ее путем чтения постов на Stack Overflow и экспериментов.

Итак, вот оно.

Настройка переменной окружения порта отладки

Во-первых, нам нужно добавить переменную окружения в место, из которого будет загружаться puma-dev. Я поместил свою в ~/.powconfig, потому что это первое, что загружается, и оно находится в моей домашней директории.

Отредактируйте ~/.powconfig, чтобы включить это:

export RUBY_DEBUG_PORT=1234

Обновить Gemfile

Убедитесь, что они находятся в каталоге :development:

gem "ruby-debug-ide"
gem "debase" # or byebug
Войти в полноэкранный режим Выйти из полноэкранного режима

Я уверен, что есть способ заставить это работать с новым отладчиком, который поставляется с Ruby 3.1+ (rdbg), но это будет упражнение для другого раза.

Добавьте инициализатор Rails для запуска rdebug-ide

Создайте файл в /config/initializers/ под названием start_debugger.rb (или любой другой) и добавьте этот код:

if Rails.env.development? && ENV['RUBY_DEBUG_PORT']
  require "ruby-debug-ide"
  Debugger.start_server nil, ENV['RUBY_DEBUG_PORT'].to_i
end
Войти в полноэкранный режим Выйти из полноэкранного режима

Добавьте Launch Target в проект в Visual Studio Code

Добавьте эту конфигурацию в <app root>/.vscode/launch.json:

{
  "configurations": [
    {
      "name": "Remote Debug",
      "type": "Ruby",
      "request": "attach",
      "remoteHost": "127.0.0.1",
      "remotePort": "1234",
      "remoteWorkspaceRoot": "${workspaceRoot}",
      "cwd": "${workspaceRoot}",
    }
  ]
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Наконец,

Перезапустите ваше приложение с помощью touch tmp/restart.txt.

Протестируйте его, запустив «Remote Debug», установив точку останова в одном из ваших контроллеров и обновив страницу, на которой будет запущен код. Если все настроено правильно, ваше приложение должно приостановиться в точке останова.

Поздравляем! 🎉

Оцените статью
Procodings.ru
Добавить комментарий