Kernel#dp
Rubyレシピブックのレシピ8.1をみて--debugオプションをRubyインタプリタの起動時につけると$DEBUGがtrueになるというのを知って、Kernel#dpとかKernle#dppとかKernel#dyとかが標準であれば良いのにと思った。こんな感じ。
module Kernel def dp *args p(*args) if $DEBUG end def dpp *args require 'pp' pp(*args) if $DEBUG end def dy *args require 'yaml' y(*args) if $DEBUG end end hoge = %w(foo bar baz) dp hoge dpp hoge dy hoge
ruby --debug ~として実行してやれば,
"foo", "bar", "baz"] ["foo", "bar", "baz"] --- - foo - bar - baz
と出力される。
これなら誤って消し忘れたときにリスクがなくて良いなぁと思う。*1
追記
一応この方が尚よいかも。
module Kernel def dp *args if $DEBUG args.each do |arg| warn arg.inspect end end end def dpp *args if $DEBUG require 'pp' args.each do |arg| warn arg.pretty_print_inspect end end end def dy *args if $DEBUG require 'yaml' args.each do |arg| warn arg.to_yaml end end end end
*1:確かにpやppでも消せば問題ないのだけど人間消し忘れてしまうものなので…