しつもーん。
nil.to_s が "" を返すということは積極的に使っていいもんですか?

「キー hoge がハッシュ h に登録されてないか登録されてても値が空("")のとき true」を

 h['hoge'] == nil or h['hoge'].empty?

ではなく

 h['hoge'].to_s.empty?

と書くのは邪悪?