sora_hです。

rubyには一部jsonなどの外部プロジェクトを取り込んでいるのですが、jsonのテストで1.9のEncodingに
対応するときには、::Encoding クラスが存在するかを確認しています。
if ::Encodingやunless ::Encodingで判定できるかと。バージョン番号を確認するより良い判定方法だったはず。
(たしか別の処理系に考慮。ただし自分で定義してる方は知らない。)

個人的に思ったのは、rubikitchさんのは実行毎にifを走らせるので、
if "".respond_to? :force_encoding
  def force_encoding_maybe(enc)
    force_encoding enc
  end
else
  def force_encoding_maybe(enc)
    self
  end
end
のほうが良いかな。同じ考え方でいくと、 "".respond_to? :force_encodingを ::Encodingに置きかえれば良いと思います。

参考にしてください。

2011/2/9 Nobuyuki Inaba <nobuyuki.inaba / gmail.com>:
> それで、プログラムを実行するとき、ruby1.9のときは、force_encodingをして、ruby1.8のときはそれをしないように
> したいと思いましたが、実行中のrubyにそれを判断する方法をしりたいのですが、なにか特別な変数などあるのかと
> 思いましたが見つけられませんでした。

-- 
Shota Fukumori a.k.a. @sora_h - http://codnote.net/