メソッドチェーンの p デバッグ? それ tap でできるよ

リファクタリング:Rubyエディション
リファクタリング Ruby エディション」によると、一時変数は極力排除した方がいいらしい。

メソッドチェーンを使えば、結果をいちいち変数に覚えなくても最終結果だけ得られる。

s.split(/\n/).each_slice(2).map(&:join)

でも、結果が意図したものと違ったら、どこでおかしくなったのか分からない。
じゃあメソッドの結果を変数に覚えて p デバッグする?

s = s.split(/\n/)
p s
# >> ["こんにちは", "", "", "", "あしたは", "", "すずしくなる", "", "はず、としんじます", "", "", "", "では、", "", "さようなら", "", "", "", "/~~~"]

s = s.each_slice(2)
p s
# >> #<Enumerator:0x100c78d0>

s = s.map(&:join)
p s
# >> ["こんにちは", "", "あしたは", "すずしくなる", "はず、としんじます", "", "では、", "さようなら", "", "/~~~"]

一時変数なくても、それ tap でできるよ。

s              .tap{|x|puts "orginal:     #{x.inspect}"}
.split(/\n/)   .tap{|x|puts "split:       #{x.inspect}"}
.each_slice(2) .tap{|x|puts "each_slice:  #{x.inspect}"}
.map(&:join)   .tap{|x|puts "map(&:join): #{x.inspect}"}
# >> orginal:     "こんにちは\n\n\n\nあしたは\n\nすずしくなる\n\nはず、としんじます\n\n\n\nでは、\n\nさようなら\n\n\n\n/~~~\n"
# >> split:       ["こんにちは", "", "", "", "あしたは", "", "すずしくなる", "", "はず、としんじます", "", "", "", "では、", "", "さようなら", "", "", "", "/~~~"]
# >> each_slice:  #<Enumerator:0x100c9e8c>
# >> map(&:join): ["こんにちは", "", "あしたは", "すずしくなる", "はず、としんじます", "", "では、", "さようなら", "", "/~~~"]

プログラミング言語 Ruby

詳細は「プログラミング言語 Ruby」の p.135「イテレートしないイテレータ」参照。