FrontPage  Index  Search  Changes  Login

Hiki Issue Tracking System - Ticket-20 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! wiki.getAllPagesでエラー

:Priority:Normal
:Reporter:kog
:Status:Closed
:Assigned to:かずひこto:Well I've had enough of this serious business,
:Version:0.8.3:Version:eieleif@h551.com
:Milestone:0.8.4:Milestone:http://h551.com
:Created:2005-08-05

!! Description

wiki.getAllPagesのパースに失敗する場合があるようです。どうも、
テストツール
というページ名が悪さをしているようで、手元のCVS HEADで試してもそうなりました。やはり、UTF8にする必要があるのかもしれません。

再現コード
#!/usr/local/bin/ruby
require "xmlrpc/client"
require "pp"
require "kconv"

server = XMLRPC::Client.new2("http://wiki.fdiary.net/kog/")
begin
   param = server.call("wiki.getAllPages")
   param.each do |s|
     puts s.tosjis
   end
rescue XMLRPC::FaultException => e
   puts "Error:"
   puts e.faultCode
   puts e.faultString
end


kog@colinux:~/bin$ ruby x.rb
/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:311:in `pull': Missing end tag for 'string' (got "value") (REXML::ParseException)
Line:
Position:
Last 80 unconsumed characters:
<value><string>メモ</string></value><value> <string>Apache</string></value><value>       from /usr/lib/ruby/1.8/rexml/parsers/streamparser.rb:16:in `parse'
         from /usr/lib/ruby/1.8/rexml/document.rb:171:in `parse_stream'
         from /usr/lib/ruby/1.8/xmlrpc/parser.rb:722:in `parse'
         from /usr/lib/ruby/1.8/xmlrpc/parser.rb:462:in `parseMethodResponse'
         from /usr/lib/ruby/1.8/xmlrpc/client.rb:410:in `call2'
         from /usr/lib/ruby/1.8/xmlrpc/client.rb:399:in `call'
         from x.rb:10
kog@colinux:~/bin$

以下のようにして、戻ってきたXMLを見てみたのですが、XMLにencodingがないのも気にはなっています。


$ diff -u client.rb.orig client.rb
--- client.rb.orig      2005-08-05 23:14:12.000000000 +0900
+++ client.rb   2005-08-05 23:13:49.000000000 +0900
@@ -407,7 +407,6 @@
      def call2(method, *args)
        request = create().methodCall(method, *args)
        data = do_rpc(request, false)
-p data
        parser().parseMethodResponse(data)
      end


$ ruby x.rb
"<?xml version=\"1.0\" ?><methodResponse><params><param><value><array><data><val
ue><string>\245\306\245\271\245\310\245\304\241\274\245\353</string></value><val
ue><string>\245\341\245\342</string></value><value><string>Apache</string></valu
e><value><string>Apache1.3.29_Windows</string></value><value><string>Database</s
tring></value><value><string>DrawingGraph</string></value><value><string>FastCGI
2.4.0_VC7</string></value><value><string>FrontPage</string></value><value><strin
g>InterWikiName</string></value><value><string>ModelingTool</string></value><val
ue><string>RubyCompile_VC7</string></value><value><string>RubyOnWindows</string>
</value><value><string>SideMenu</string></value><value><string>SilentPC</string>
</value><value><string>TextFormattingRules</string></value><value><string>dev_ti
ps_ruby-fcgi</string></value><value><string>mod_perl</string></value><value><str
ing>php</string></value><value><string>ruby-fcgi-0.8.4_VC7</string></value><valu
e><string>tools</string></value><value><string>win32-pipe-0.0.1_VC7</string></va
lue></data></array></value></param></params></methodResponse>\n"
c:/usr/local/lib/ruby/1.8/rexml/parsers/baseparser.rb:311:in `pull': Missing end
...以下省略

とりあえず、以下のパッチで通るようにはなるようです。


$ cvs diff -u
cvs diff: Diffing .
Index: xmlrpc.rb
===================================================================
RCS file: /cvsroot/hiki/hiki/hiki/xmlrpc.rb,v
retrieving revision 1.3
diff -u -r1.3 xmlrpc.rb
--- xmlrpc.rb   31 Jul 2005 09:13:42 -0000      1.3
+++ xmlrpc.rb   5 Aug 2005 14:19:53 -0000
@@ -73,7 +73,7 @@
          conf = Hiki::Config::new
          db = Hiki::HikiDB::new( conf )
          begin
-          ret = db.pages
+          ret = db.pages.map{|s| NKF::nkf('-m0 -w', s) }
          rescue
            STDERR.puts $!, $@.inspect
            ret = false

xmlrpcのライブラリ、使い方に問題がないとすると、
wiki.getAllPageだけUTF8というわけにもいかないですから
ほかのメソッドについても
encodingをUTF8にそろえないとまずいかもしれません。

*2005-08-05 (金) 23:52:36 かずひこ : この件は、xmlrpc4r もいじらないと救えなさそうです。http://znz.s1.xrea.com/t/?date=20050804#p01 / http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-core/5127 / http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-dev/26324
*2005-08-06 (土) 00:38:59 kog : xmlrpc4rにも問題があるのはわかりましたが、HikiのxmlrpcがEUCのままやりとりしてるのは事実だし、サーバとクライアントのライブラリバージョンが混ざるとやっかいなので、はやめにUTF8にしちゃいませんか?
*2005-08-06 (土) 02:13:29 kog : とりあえずUTF8とEUCを選べるようにしたものをMLに投げます。
*2005-09-29 (木) 11:49:08 かずひこ : 0.8.4 で UTF-8 固定に変更しました。
----
!!!Rei Herleif (2007-08-18 (Sat) 07:19:38)
Back in the U.S.S.R Rei Herleif.

{{its_edit_ticket_form}}