読者です 読者をやめる 読者になる 読者になる

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でも消せば問題ないのだけど人間消し忘れてしまうものなので…