Windowsで、ActiveSupportのXMLパーサをLibXMLに切り替える

 これまで、何回かに渡って、Windows環境で、ActiveSupportXMLパーサの実装をLibXMLに切り替えようと試みてきました。最近、それができるようになりました!ヽ( ・∀・)ノ ワーイ
 その手順をまとめます。

  1. gem install libxml-ruby -v 0.9.7
    • 環境変数PATHEXTに"."がない場合は、あらかじめ追加しておきます。
    • rakeファイルを開くプログラムを選択するウィンドウが現れますが、キャンセルします。
  2. 以下の4つのファイルを libxml-ruby-1.1.3-x86-mswin32-60\ext\mingw から libxml-ruby-1.1.3-x86-mswin32-60\lib へコピー
    • libiconv-2.dll
    • libxml2-2.dll
    • libxml_ruby.dll.a
    • libxml_ruby.so
  3. activesupport-2.3.2\lib\active_support\xml_mini.rb の XmlMini.backend = 'REXML' を XmlMini.backend = 'LibXML' に変更

 上で書いているファイルは、全てgemで管理されているフォルダにあります。
 後は、Railsアプリを起動してみて、ActiveSupportXMLパーサを使ってみてください。私は、ActiveResourceウェブサービスへアクセスしたところ、レスポンスのXMLをパースしてくれました。ActiveResourceでは、GETしたメッセージのパースはActiveSupportの機能を使って行います。
 1については、Windowsにlibxml-rubyインストールにメモを残しています。2については、後で、調べたことをメモとして残そうと思います。3については、ActiveSupportのXMLパーサの実装をLibXMLに変更できない件(2)にメモを残しています。
 バージョン0.9.7での説明をしてきましたが、現時点での最新版であるバージョン1.1.3でも動作しました。
 libxmlは処理が速いのでおすすめです!
↓libxml-rubyのREADMEから抜粋

From http://depixelate.com/2008/4/23/ruby-xml-parsing-benchmarks

               user     system      total        real
 libxml    0.032000   0.000000   0.032000 (  0.031000)
 Hpricot   0.640000   0.031000   0.671000 (  0.890000)
 REXML     1.813000   0.047000   1.860000 (  2.031000)

From https://svn.concord.org/svn/projects/trunk/common/ruby/xml_benchmarks/

               user     system      total        real
 libxml    0.641000   0.031000   0.672000 (  0.672000)
 hpricot   5.359000   0.062000   5.421000 (  5.516000)
 rexml    22.859000   0.047000  22.906000 ( 23.203000)