railsのデバッグ周りの環境整備

railsのデバッグ周りの環境整備

みなさんこんにちは、新人の意識高丸です。
今回はRailsのデバッグ環境周りを整備してみました。

## エラー画面を見やすくする「better_errors」
無機質なRailsの標準のエラー画面が以下のように見やすくなります。

“` Gemfile
group :development, :staging do
gem ‘better_errors’ #追加
end
“`

## エラー画面上でREPLが使えるようになる「binding_of_caller」
rails cで出来るような対話的な実行がエラー画面上から行えるようになります

“`Gemfile
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も同時にインストールされます

“`Gemfile
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(#)> p @boards
Board Load (0.3ms) SELECT “boards”.* FROM “boards”
#]>
=> [#]
[2] pry(#)> Board.all
CACHE (0.0ms) SELECT “boards”.* FROM “boards”
=> [#]
“`

### ルーティングを表示

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」

ステップ実行などが出来るようになります

“`Gemfile
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を導入すると、ルーティングをブラウザ上で確認できます。

“`Gemfile
group :development, :staging do
gem ‘better_errors’
gem ‘binding_of_caller’
gem ‘pry-rails’
gem ‘sextant’ #追加
end
“`

`http://localhost:3000/rails/routes`にアクセスしてルーティングを確認できます。

他にもたくさんのGemがあるようなので少しずつ検証していきたいと思います

これらの内容は以下のページに先輩にまとめてもらいました。
http://qiita.com/kanekomasanori@github/items/e705d6b9fbfd6de6c63f

TAG

  • このエントリーをはてなブックマークに追加
意識 高丸
エンジニア 意識 高丸 takamaru

Rubyについて日々勉強している新人エンジニアです。初心者向けRuby勉強会のレポートなどを投稿していきます。