自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
October 25, 2007 [おもひで]
■ [Misc] JRuby
JRuby on RailsでRuby-GetTextを使いたい、と言う要望がちらほら、(というか一部からかなりしつこく?)くるようになった。今まで全然興味なかったから手もつけてみたことが無かったんだけど、とりあえずちょこっと触ってみることにした・・・・・ら、これなかなかのもんだね。
問題はso形式のライブラリが一切使えないこと(たぶん。おかげで、標準ライブラリの中からso系のものは根こそぎカットされてる・・・って、やり方あったら教えて!)。Ruby-GetTextではIconvとlocale_system.soが使えないのでその部分をJavaのライブラリでラップしてあげるようなコードを書く必要があると思われる。まぁRailsだけということだったらその辺をざっくりコメントアウトすれば動いちゃうんだろうけど(実際そういうパッチが送られてくるし・・・)、Ruby-GetTextはコンソールで動かしたときにローカライズされた文字列が文字化けせずに表示できる、というのがウリなんだから、どうせJRubyに対応させるんだったらそこまでやりたいよね。
ま、それはそれとして、jirbでちょっと実験。
% /usr/java/jruby/bin/jruby /usr/java/jruby/bin/jirb irb(main):001:0> require 'java' => true irb(main):002:0> locale = java.util.Locale.getDefault => #<Java::JavaUtil::Locale:0x1be2893 @java_object=ja_JP> irb(main):003:0> locale.to_s => "ja_JP"
おぉ。簡単だ。ってかフツーにJavaでちょっとしたコードを確認したいとき、こんな感じで確認できちゃうってすげー便利かも。public static void main(String[] args)とか書かないで済むんだからなー(いつも忘れるんだよな、この文(^^;))。
require 'java'
module Iconv
module_function
def conv(to, from, str)
str = java.lang.String.new(str.unpack("C*").to_java(:byte), from)
str.getBytes(to).to_ary.pack("C*")
end
end
if __FILE__ == $0
puts Iconv.conv("Shift_JIS", "UTF-8", "あいう")
end
とりあえず、動いたみたいだけど・・・。
[ツッコミを入れる]
