VSCode에서 Rails 항목 디버깅 허용

4094 단어 DockerVSCodeRubyRails

이 문장


VScode와gem의 ruby-debug-ide·debase를 사용하여 디버깅을 한다는 보도가 많지만 원격 디버깅 프로그램을 사용하는 경우 환경 주위 등 시기별로 실행하기 어려워 경험적으로 많기 때문에 참고하시면 됩니다.

프로젝트 이름

  • Rails: 5.2.1
  • Ruby: 2.5.3
  • VSCode: 1.28.2
  • VSCode Extension Ruby(rebornix.ruby): 0.20.0
  • gem ruby-debug-ide: 0.6.1
  • gem debase: 0.2.2
  • 소스 코드


    바로 MacOS에서 Rails를 시작할 때.
    이 소스는 Docker에서 시작할 때의 디버깅을 검증합니다.

    프로젝트 구성



    나중에 데이터베이스와 같은 중간부품과 다른 응용 프로그램을 쉽게 추가할 수 있도록 Rails를 위해 디렉터리를 끊었습니다.

    VScode 디버그 설정(launch.json)


    .vscode/launch.json
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Local - Listen for rdebug-ide",
                "type": "Ruby",
                "request": "attach",
                "cwd": "${workspaceRoot}/rails",
                "remoteHost": "0.0.0.0",
                "remotePort": "1234",
                "remoteWorkspaceRoot": "${workspaceRoot}/rails",
                "useBundler": true
            },
            {
                "name": "Local Docker - Listen for rdebug-ide",
                "type": "Ruby",
                "request": "attach",
                "cwd": "${workspaceRoot}/rails",
                "remoteHost": "0.0.0.0",
                "remotePort": "1234",
                "remoteWorkspaceRoot": "/rails",
                "useBundler": true
            }
        ]
    }
    
  • Local - Listen for rdebug-ide
    이것은 Docker를 사용하지 않고 Rails를 직접 시작할 때의 설정입니다.
    rails 디렉터리로 이동한 다음bundle install을 실행하고, 디버깅에 사용할 rails 시작 명령을 실행하고, VScode의 디버깅을 실행할 수 있습니다.
  • $ cd rails
    $ bundle install --path vendor/bundle
    $ bundle exec rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s
    
  • Local Docker - Listen for rdebug-ide
    이것은 Docker를 사용하여 Rails Device를 설정하는 것입니다.
    remoteWorkspaceRoot은 컨테이너가 있는 디렉토리 계층 구조입니다.
    다음은 디바이스를 위한 Docker를 시작하라는 명령으로, VScode를 시작할 수 있는 디바이스입니다.
  • $ docker-compose -f docker-compose.debug.yml up
    
    docker-compose.debug.ymldocker-compose.yml 두 파일이 다릅니다.
    Rails 시작 명령에 rdebug-ide 차이가 있는지 확인
    디버그를 열 때 사용하는 포트의 차이만 있습니다.

    Ruby 2.5.3 Rails 5.2.1 디버깅에 푹 빠진 곳


    아래 URL에는 현상과 해결 방법이 적혀 있습니다.
    해설을 너무 많이 봐도 이해가 안 돼요.
    Ruby2.5 시리즈의 trace 명령을 제거하여 5-10% 의 고속화
    gem의 bootsnap을 통해 Rails 시작 시 최적화
    디버깅이 잘 안 되는 경우가 있는 것 같습니다.
    일단 rails/config/boot.rb
    ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
    
    require 'bundler/setup' # Set up gems listed in the Gemfile.
    # require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
    unless ( (('2.5.0'..'2.5.3').include? RUBY_VERSION) && defined?(Debugger) )
      # see: https://superuser.com/questions/1359747/is-it-possible-to-get-visual-studio-code-ide-debugging-of-apps-on-rails-5-2-to-w
      require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
    end
    
    이렇게 디버깅할 때bootsnap을 사용하지 않으면 디버깅할 수 있습니다.

    좋은 웹페이지 즐겨찾기