こしごぇ(B)

旧:http://d.hatena.ne.jp/koshigoeb/

Rubyでデバッグモードの時だけ実行されるメソッドってあるんだっけ?

ruby -d で実行して $DEBUG が真になった時にだけブロックを実行するメソッド、的なものはあるんでしたっけ?

if $DEBUG
  def debug
    yield if block_given?
  end
else
  def debug
  end
end

debug { puts 'x' }

こんな感じのやつ。

※ ついでに、こういうやつにふさわしい名前ってなんですかね?

追記

trace という名前はありなのかな?tracer と混同するかな。

if $DEBUG
  def trace
    if block_given?
      result = yield
      unless $stdout.closed?
        $stdout.write "%s\n" % result.inspect
      end
    end
  end
else
  def trace
  end
end

trace { puts 'x' }

世間のやり方を調べようにも、どう検索したものか分からない…。