Rails의 디버깅 환경 정비 등

6077 단어 RubyRails
디버그 주위의gem 정리

잘못된 화면을 쉽게 볼 수 있는 "better errors"


무기 Rails 표준 오류 화면은 다음과 같습니다.
group :development, :staging do
  gem 'better_errors'       #追加
end

기본 오류 화면



better_erross를 가져올 때 오류 화면



잘못된 화면에서 REPL의 "binding of calller" 사용 가능


오류 화면에서 rails c 대화를 실행할 수 있습니다
group :development, :staging do
  gem 'better_errors'
  gem 'binding_of_caller'       #追加
end
  • 화면에서 코드를 상호작용으로 실행할 수 있다

  • rails의 컨트롤러를 편리하게 하는 "pry-rails"


    pry-rails를 가져오면 rails의 컨트롤러가 시작될 때pry가 시작되며pry와pry-rails의 편리한 기능을 사용할 수 있습니다
    pry-rails는pry에 의존하기 때문에 아래와 같이 pry도 동시에 설치합니다
    group :development, :staging do
      gem 'better_errors'
      gem 'binding_of_caller'
      gem 'pry-rails'           #追加
    end
    

    브레이크 삽입하기


    프로그램에서 아래 기술을 진행하면 인터럽트 정지 프로그램을 추가할 수 있습니다
       # GET /boards
       # GET /boards.json
       def index
         @boards = Board.all
    pry.binding
       end
    
    이렇게 "pry.binding"을 기술하면 그 위치에서 프로그램 사용을 정지할 수 있습니다
    Started GET "/boards" for 127.0.0.1 at 2014-03-04 09:28:21 +0900
    Processing by BoardsController#index as HTML
    [1] pry(#<BoardsController>)> p @boards
      Board Load (0.3ms)  SELECT "boards".* FROM "boards"
    #<ActiveRecord::Relation [#<Board id: 1, name: "board1", created_at: "2014-02-27 00:19:18", updated_at: "2014-02-27 00:19:18">]>
    => [#<Board id: 1, name: "board1", created_at: "2014-02-27 00:19:18", updated_at: "2014-02-27 00:19:18">]
    [2] pry(#<BoardsController>)> Board.all
      CACHE (0.0ms)  SELECT "boards".* FROM "boards"
    => [#<Board id: 1, name: "board1", created_at: "2014-02-27 00:19:18", updated_at: "2014-02-27 00:19:18">]
    

    라우팅 표시


    show-routes에 루트를 표시할 수 있습니다
    pry(main)> show-routes
           Prefix Verb   URI Pattern                   Controller#Action
        positions GET    /positions(.:format)          positions#index
                  POST   /positions(.:format)          positions#create
     new_position GET    /positions/new(.:format)      positions#new
    edit_position GET    /positions/:id/edit(.:format) positions#edit
         position GET    /positions/:id(.:format)      positions#show
                  PATCH  /positions/:id(.:format)      positions#update
                  PUT    /positions/:id(.:format)      positions#update
                  DELETE /positions/:id(.:format)      positions#destroy
         stickies GET    /stickies(.:format)           stickies#index
                  POST   /stickies(.:format)           stickies#create
       new_sticky GET    /stickies/new(.:format)       stickies#new
      edit_sticky GET    /stickies/:id/edit(.:format)  stickies#edit
           sticky GET    /stickies/:id(.:format)       stickies#show_______
    

    모델 표시하기


    show-models를 통해 모형을 표시할 수 있습니다
    pry(main)> show-models
    Board
      id: integer
      name: string
      created_at: datetime
      updated_at: datetime
    Position
      id: integer
      board_id: integer
      sticy_id: integer
      kpt_type: integer
      sequence: integer
      created_at: datetime
      updated_at: datetime
    Sticky
      id: integer
      memo: string
      deleted: boolean
      created_at: datetime
      updated_at: datetime
    

    pry 디버깅을 통해 단계 실행 등'pry-debugger'


    단계 등을 수행할 수 있습니다.
    group :development, :staging do
      gem 'better_errors'
      gem 'binding_of_caller'
      gem 'pry-rails'
      gem 'pry-debugger'    #追加
    end
    
    단축키 사용 가능
    ~/.pryrc
    if defined?(PryDebugger)
      Pry.commands.alias_command 'c', 'continue'
      Pry.commands.alias_command 's', 'step'
      Pry.commands.alias_command 'n', 'next'
      Pry.commands.alias_command 'f', 'finish'
    end
    
    

    브라우저에 루트를 표시할 수 있는 "sextant"


    sextant를 가져오면 브라우저에서 경로를 확인할 수 있습니다.
    group :development, :staging do
      gem 'better_errors'
      gem 'binding_of_caller'
      gem 'pry-rails'
      gem 'sextant'         #追加
    end
    
    http://localhost:3000/rails/routes 라우트를 확인하기 위해 액세스할 수 있습니다.

    좋은 웹페이지 즐겨찾기