Visual Studio Code를 사용하여 Rails 디버깅

8386 단어 VSCodeRubyRails
Visual Studio Code(이하 VS Code)의 정식 버전은 2016년 4월 14일에 출시되었습니다.
편집기로만 사용되지만 vscode-ruby 확장 기능의 등장으로 루비의 디버깅 실행이 가능해졌기 때문에 디버깅을 해 보고 싶습니다.

운영 환경


OS:OS X
Ruby:2.2.3
Rails:4.2.6
루비는 좀 낡았지만 신경 쓰지 않아도 될 것 같아요.

환경 구축


우선 Rails가 이동하는 환경이어야 하지만, 루비의 설치가 현지 gug 조사에 적합하면 얼마든지 나와 있습니다.
(mac의 사람은'homebrew rbenv ruby'로 검색하면 나오고, 윈도우즈의 사람은'ruby 설치 프로그램'으로 검색하면 얼마든지 나온다. 윈도우즈의 사람은build14316을 적용하면 참조할 수 있다여기.
그러면 다음 명령으로 디버깅용 Rails 응용 프로그램을 만듭니다.
bundle exec rails new debug_project --skip-bundle
cd debug_project
아래에 생성된 Gemfile을 열고 다음 두 줄을 추가합니다.(개발자 그룹만 있으면 된다는 걸 알고 싶어요)
Gemfile
gem 'ruby-debug-ide'
gem 'debase'
하지만,gem을 넣으세요.
bundle install --path vendor/bundler
마지막으로spring 파일을 토합니다.
bundle exec spring binstub --all
Windows라면 스프링을 사용할 수 없을 것 같아서 다음 파일을 준비하면 됩니다.
bin/rails
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
require 'rails/commands'
이로써 Rails 측은 준비를 마쳤다.
다음은 VS 코드 사이드.
VSCode를 열고 F1 를 누르면 "확장 기능 설치"를 선택하고 "ext install Ruby"로 시작하는 첫 번째 확장 기능을 설치합니다.


VSCode에서 rdebug-ide의 실행 설정을 설정합니다.그 서류는 아래와 같이 작성되었다.
.vscode/launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for rdebug-ide",
      "type": "Ruby",
      "request": "attach",
      "cwd": "${workspaceRoot}",
      "remoteHost": "127.0.0.1",
      "remotePort": "1234",
      "remoteWorkspaceRoot": "${workspaceRoot}",
      "useBundler": true
    }
  ]
}
중요한 것은 "useBundler": true.
ruby-debug-ide 등 경로 지정을 통해 넣은 경우bundle exec의 실행이 필요하지만 존재를 가리킨다.(반대로 시스템 환경에 들어갈 필요가 없는 사람.)
제작되면 이런 배치가 될 거예요.

디버그 실행 코드 만들기


위의 환경 구축과 이미지에서 아래의 일을 먼저 실행하고 디버깅 코드를 만듭니다.필요하지 않으면 여기를 건너뛰세요.
bundle exec rails g scaffold book
서적 정보 기능을 갖춘 전제에서 상술한 명령을 입력하고 컨트롤러 등을 제작한다.
migrate 파일 편집(책 이름과 저자 추가)
db/migrate/yyyymmddhhmmss_create_books.rb
class CreateBooks < ActiveRecord::Migration
  def change
    create_table :books do |t|
      t.string :title
      t.string :author

      t.timestamps null: false
    end
  end
end
마지막으로migrate를 실행합니다.
bundle exec rake db:migrate

디버그 실행


준비가 다 되었기 때문에 나는 디버깅을 하고 싶다.
디버깅을 할 수 있도록 먼저 터미널에서 rdedug-ide를 실행합니다.
bundle exec rdebug-ide --host 127.0.0.1 --port 1234 --dispatcher-port 26162 -- bin/rails s
뱀발: bin/rails s부분용bundle exec rails s으로 해봤는데 잘 안 됐어요.
그런 다음 다음 다음 메시지가 표시됩니다.
Fast Debugger (ruby-debug-ide 0.6.0, debase 0.2.1, file filtering is supported) listens on 127.0.0.1:1234
rails가 아직 시작되지 않았습니다.rdebug-ide는 실행을 기다리는 상태입니다.
그러니까 그걸 실행할 필요가 있어.
그리고 디버깅을 시작합니다.
VS Code를 통해 디버그 보기로 전환하고 디버그 실행 버튼을 누릅니다.

그리고 콘솔에 다음과 같은 글이 올라왔습니다.
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://localhost:3000
=> Run rails server -h for more startup options
=> Ctrl-C to shutdown server
[2016-04-20 12:30:07] INFO WEBrick 1.3.1
[2016-04-20 12:30:07] INFO ruby 2.2.3 (2015-08-18) [x86_64-darwin14]
[2016-04-20 12:30:07] INFO WEBrick::HTTPServer#start: pid=8236 port=3000
나는 Rails가 일어설 것이라고 생각한다.
하면, 만약, 만약...

화면이 정상적으로 켜져 있습니다.
VS 코드 측면에서 멈추고 싶은 부분에 브레이크를 붙여주세요.

상기 그림에서 말한 붉은 동그라미 부분에 커서를 끼고 클릭하면 인터럽트를 설정할 수 있습니다.
(여기서 등록하기 전에 인터럽트 붙여넣기)
방금 브라우저 화면에서 "New Book"링크를 누르면 새 로그인 화면으로 들어가고, "Createbook"단추를 누르면 인터럽트에서 멈출 것입니다.

보고 싶은 변수를 선택하고 마우스 오른쪽 버튼을 클릭하여 [디버깅: 모니터링에 추가]를 선택하면 모니터링에 추가할 수 있으며 내용을 참조할 수 있습니다.
Rubymine이라는 강력한 IDE도 절차를 수행할 수 있지만 이 VS 코드도 가능해져서 Ruby와 Rails의 개발이 쉬워졌겠죠.
참고로 저는 Sublime text에 표준적인 점프 기능이 있지만 Atom과 이 VS 코드에는 존재하지 않습니다. 만약 실현된다면 Sublime text를 떠나고 싶습니다.
안정적인 오자 누락은 나중에 수정하겠습니다.

좋은 웹페이지 즐겨찾기