dari88's diary

これから趣味にするプログラミング/PHP/javascript/kohana/CMS/web design/

Rubyプログラムを Ruby 1.9.3 と Ruby 1.8..7 両対応にする方法

 Ruby の配布用実行ファイルを作る場合、Windows用では Ruby1.9.3 対応の ocra が便利ですが、Mac/Linux用では Ruby 1.8.7 対応の rubyscript2exe を使うしか方法がありません。同じプログラムを2本メンテナンスするのは大変なので、一本化を検討してみました。

 ヤマレコダウンローダーで引っかかったのはエンコードの変換に関わる iconv と encode です。で、その回避法のメモです。

 

エンコードの変換

 プログラムの冒頭で Ruby のバージョンを確認して、iconv をインクルードするか否かを指定します。

if /^1\.8/.match(RUBY_VERSION) 
  require 'iconv'
end

 実際に文字コードを変換する部分では、

      if /^1\.8/.match(RUBY_VERSION) 
        html = Iconv.iconv('UTF-8','EUC-JP',html)[0]
      else
        html = html.encode("UTF-8","EUC-JP")
      end

のように Ruby のバージョンに応じてエンコードの変換を使い分けします。