Windowsで、ActiveSupportのXMLパーサをLibXMLに切り替える
これまで、何回かに渡って、Windows環境で、ActiveSupportのXMLパーサの実装をLibXMLに切り替えようと試みてきました。最近、それができるようになりました!ヽ( ・∀・)ノ ワーイ
その手順をまとめます。
- gem install libxml-ruby -v 0.9.7
- 環境変数PATHEXTに"."がない場合は、あらかじめ追加しておきます。
- rakeファイルを開くプログラムを選択するウィンドウが現れますが、キャンセルします。
- 以下の4つのファイルを libxml-ruby-1.1.3-x86-mswin32-60\ext\mingw から libxml-ruby-1.1.3-x86-mswin32-60\lib へコピー
- activesupport-2.3.2\lib\active_support\xml_mini.rb の XmlMini.backend = 'REXML' を XmlMini.backend = 'LibXML' に変更
上で書いているファイルは、全てgemで管理されているフォルダにあります。
後は、Railsアプリを起動してみて、ActiveSupportのXMLパーサを使ってみてください。私は、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)