SlideShare a Scribd company logo
1 of 15
Download to read offline
Railsで使うデバッグ役立ちツールの
意見交換
@hamajyotan    
©2013 ummm All Rights Reserved.    
自己紹介
●
@hamajyotan – SAKAGUCHI Takashi
–
鳥取IT企業、オフィスウームの代表し
てます
–
http://www.ummm.info
–
う〜むとお困りの際にはご用命を
–
主にRuby on Railsに関しての技術的
な相談を請け負っています。
実装もお受けします。
この発表について
僕が日頃使っているRailsのデバッグ
に有用なgemを共有します
といいつつ『他にこんなのあるよ』
というような意見を僕が聞きたくて
それのきっかけにしたいです
説明で使うアプリ作ります
$ rails new hoge && cd hoge/
$ git init && git add . && git commit -m “frst commit”
$ rails g controller welcome index && rm public/index.html
$ rails g scafold User name age:integer && rake db:migrate
$ echo "<%= link_to nil, users_path %>" >> ¥
> app/views/welcomde/index.html.erb
$ echo "body { width: 640px; margin: 0 auto; }" >> ¥
> app/assets/stylesheets/application.css
$ # confg/routes.rb の修正
Hoge::Application.routes.draw do
resources :users
root to: "welcome#index"
end
$ rails server # ⇒ access to http://127.0.0.1:3000
Gemfle(for debug)抜粋
group :development, :test do
gem 'pry-doc', require: false
gem 'pry-rails'
gem 'pry-debugger' # gem 'pry-byebug'
gem 'hirb'
gem 'hirb-unicode'
end
group :development do
gem 'better_errors'
gem 'binding_of_caller'
gem 'rack-mini-profler'
gem 'quiet_assets'
end
pry, pry-doc
●
言わずと知れたREPL環境、これが無いと始まらな
い。
●
.(ドット)から始めるとshellコマンドを実行できる。
●
cd⇒コンテキストを指定したオブジェクトにして実
行(instance_eval)
●
binding.pryでブレークポイントを埋め込める
●
ls⇒有効なオブジェクトを確認
●
show-doc⇒ドキュメントを表示
●
show-method, $, show-source⇒(メソッドの)
ソースコードを表示、Cのソースも読める。
pry-rails
●
rails consoleコマンドでirbでなくpryが起動す
るようになる
●
reload! ⇒ rails構成を再読み込み
●
show-routes⇒ルーティング表示
●
show-models⇒モデル表示
●
show-middleware⇒rackミドルウェアを表示
●
困ったらhelp
●
.pryrcを配置しておけばconsole起動の初期化
時の処理をかける
pry-debugger(pry-byebug)
●
binding.pryで実行を止めた箇所から移
動できる。(ステップ実行)
●
continue⇒デバッグを抜ける
●
step⇒メソッドの中に入って1つ進める
●
next⇒現在のメソッド上で1つ進める
●
fnish⇒現在のメソッドを抜ける
hirb, hirb-unicode
●
hirb
–
ActiveRecordの結果を見やすく整形して
表示してくれる。
●
hirb-unicode
–
hirbでは全角文字が出力結果に混ざってい
るとインデントがずれる
–
hirb-unicodeではそれを解消する
.pryrcファイル例
if defned? Hirb
●
Hirb::View.instance_eval do
●
def enable_output_method
●
@output_method = true
●
@old_print = Pry.confg.print
●
Pry.confg.print = proc do |output, value|
●
Hirb::View.view_or_page_output(value) || @old_print.call(output, value)
●
end
●
end
●
●
def disable_output_method
●
Pry.confg.print = @old_print
●
@output_method = nil
●
end
●
end
●
●
Hirb.enable
●
end
better_errors,
binding_of_caller
●
better_errors
–
エラー画面が格好良くなる
–
見やすいエラーメッセージ、など
●
binding_of_caller
–
better_errorsのエラー画面でREPLが叩け
るようになる
rack-mini-profler
●
プロファイラ
●
実行するとWeb画面左上に実行時間な
どが表示されるようになる
●
SQLの実行状況などもここで確認できる
quiet_assets
●
assets pipelineを有効にしていると出てくる
ログの大部分はassets実行結果になる
–
⇒肝心なログが拾いにくい
●
assetsの実行結果ログは出力が抑制されてロ
グ出力がスッキリする
おまけ - .bashrc
alias g="git"
function irb { if which pry >/dev/null 2>&1; then pry $*; else `which irb` $*; f; }
function be { if bundle check >/dev/null 2>&1; then bundle exec $*; else $*; f; }
for cmd in rails rake rspec guard cap; do
alias $cmd="be $cmd"
done
alias r="rails"
alias ra="rake"
Happy debugging.

More Related Content

Similar to 20130929 tottoruby

フレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjpフレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjpShiro Fukuda
 
長いの
長いの長いの
長いのemasaka
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)NTT DATA OSS Professional Services
 
TFUG#3 Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方
TFUG#3  Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方TFUG#3  Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方
TFUG#3 Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方Masato Taruishi
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイルToru Kawamura
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてHirata Tomoko
 
Java script testing framework for around html5 studies-
Java script testing framework for  around html5 studies-Java script testing framework for  around html5 studies-
Java script testing framework for around html5 studies-Jun Saeki
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾Ryutaro YOSHIBA
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Yusuke Wada
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係sady_nitro
 
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使うRyo Nagai
 
レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話nekogeruge_987
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925Yu Ito
 
Rails::Engineを使ってみたよ
Rails::Engineを使ってみたよRails::Engineを使ってみたよ
Rails::Engineを使ってみたよKeisuke Izumiya
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Takuya Mukohira
 

Similar to 20130929 tottoruby (20)

フレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjpフレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjp
 
長いの
長いの長いの
長いの
 
E zuka-teck2019-7-11 LT
E zuka-teck2019-7-11 LTE zuka-teck2019-7-11 LT
E zuka-teck2019-7-11 LT
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
 
TFUG#3 Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方
TFUG#3  Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方TFUG#3  Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方
TFUG#3 Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイル
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
 
Java script testing framework for around html5 studies-
Java script testing framework for  around html5 studies-Java script testing framework for  around html5 studies-
Java script testing framework for around html5 studies-
 
Slimの紹介
Slimの紹介Slimの紹介
Slimの紹介
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係
 
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
 
Application Bootstrap
Application BootstrapApplication Bootstrap
Application Bootstrap
 
レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
Rails::Engineを使ってみたよ
Rails::Engineを使ってみたよRails::Engineを使ってみたよ
Rails::Engineを使ってみたよ
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

20130929 tottoruby