自己紹介● @hamajyotan – SAKAGUCHI Takashi
– 鳥取IT企業、オフィスウームの代表してます
– http://www.ummm.info– う〜むとお困りの際にはご用命を– 主にRuby on Railsに関しての技術的
な相談を請け負っています。実装もお受けします。
説明で使うアプリ作ります$ 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'endgroup :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が叩け
るようになる
quiet_assets● assets pipelineを有効にしていると出てくるログの大部分はassets実行結果になる– ⇒肝心なログが拾いにくい
● assetsの実行結果ログは出力が抑制されてログ出力がスッキリする
おまけ - .bashrcalias 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"donealias r="rails"alias ra="rake"