Windows用にputsがSJISを出力するように再定義してみた。かっこよく言えばメタプログラミングであるが、やっていることは単純に
- putsをputs_originalにaliasし、
- 新たにputsをputs_originalを使ってdefしている
だけである(『プログラミングRuby』の「静的エイリアスチェーン」に相当)。
alias puts_original puts
def puts(string = "")
puts_original(string.tosjis)
end
ただ、この工夫によってコード中の出力メソッドはすべてputsになり、他のOSへの移植性が良くなる。例えばAndroidへの移植などはすぐできるだろう。