Rails 7의 원격 디버깅
Rails 7에는 official Ruby debugger . 또한 Foreman을 사용하여 개발 중인 여러 프로세스를 조율합니다. 이렇게 하면 프로세스와 함께 Rails 서버를 실행하여 단일 명령을 사용하여 프런트엔드 자산을 보고 컴파일할 수 있습니다.
귀찮게도 이것은 디버깅을 더 까다롭게 만듭니다. 앱에 중단점을 추가하고 콘솔에서 명령을 실행할 수는 없습니다. 동일한 터미널 창은 여러 프로세스를 실행하므로 항상 상호 작용하지는 않습니다.
debug
gem은 이러한 경우에 유용한 원격 디버깅을 지원합니다. 이 설정을 사용하면 외부 독립 디버거 프로세스가 다른 디버기 Ruby 프로세스에 연결됩니다.application.rb
에 아래 줄을 추가하여 Rails 앱에서 원격 디버깅을 활성화합니다.require "rails/all"
if defined?(Rails::Server) && Rails.env.development?
require "debug/open_nonstop"
end
# ...
Rails 환경이 개발 중이고 원격 디버깅을 활성화하기 전에
Rails::Server
상수가 정의되어 있는지 확인합니다. 후자의 검사는 앱이 웹 서버의 컨텍스트에서 실행될 때만 원격 디버깅이 활성화되도록 합니다. Rails 콘솔과 같은 다른 컨텍스트나 Sidekiq과 같은 백그라운드 작업 프로세서에서 활성화하면 안 됩니다.이제 개발 중인 Rails 서버를 시작하면
debug
gem이 디버거 프로세스가 연결할 수 있는 UNIX domain socket을 엽니다.bin/dev
를 사용하여 서버를 시작하고 다른 터미널 창에서 다음을 실행합니다.$ bundle exec rdbg -a
Rails 서버가 실행 중인 유일한 디버깅 가능한 프로세스인 경우(반드시 있어야 함) 디버거가 연결됩니다. 앱에 중단점을 추가하고 디버거 프로세스에서 명령을 실행할 수 있습니다!
Ctrl+D
는 디버거를 종료하고 Rails 서버를 실행 상태로 둡니다. 디버깅을 마친 후에 이 작업을 수행하는 것이 좋습니다. 사용 가능한 명령의 전체 목록은 다음 문서를 확인하십시오: https://github.com/ruby/debug#control-flow .참고:
require "debug/open"
대신 require "debug/open_nonstop"
문을 사용할 수도 있습니다. 여기서 단점은 디버거를 연결하고 디버거를 연결할 때까지continue
시작 시 프로그램이 일시 중지된다는 것입니다. 개발 중에 서버를 얼마나 자주 다시 시작해야 하는지 고려할 때 이것은 매우 까다로울 수 있습니다.이 게시물이 마음에 든다면 내 책The Rails and Hotwire Codex을 확인하여 Rails 및 Hotwire 기술을 레벨 업하십시오!
Reference
이 문제에 관하여(Rails 7의 원격 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ayushn21/remote-debugging-in-rails-7-49nh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)