http://jp.rubyist.net/magazine/?0007-BundledLibraries
上記の「単独で実行できる XMLRPC::Server」は実行できたのですが、レンタルサーバーなどに設置する「CGIServer CGIで使うサーバ」はどのようなファイルをどのように設定するのでしょうか?
http://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/xmlrpc-howto-ruby.html#XMLRPC-HOWTO-RUBY-SERVER
上記の「単純な Ruby サーバを示します」の例をXMLRPCserver.rb と名前をつけてlocalでWEBrickを動かして 以下のように呼んでみたりしましたが500エラーになりました。
>|ruby|
require 'xmlrpc/client'
client = XMLRPC::Client.new2("http://localhost:8080/XMLRPCserver.rb")
p client.call("sample.sumAndDifference", 5, 3)
||<
XMLRPC::CGIServerは通常のCGIアプリケーションと同じように使います。名前にServerが付いてますが単体でHTTPサーバの機能を持たず、Apacheなど他のHTTPサーバから起動されます。WEBrickのHTTPサーバでも構いません。
以下はソースに含まれていたサンプルを実際にHTTPサーバ上に置いたものです。実際に動作しますのでお試しください。
まずはウェブブラウザで上記CGIへアクセスし、以下の表示が出ると、CGIとして動作していることが確認できます。
405 Method Not Allowed Unexpected error occured while processing XML-RPC request!
その後ruby client.rb
を実行して、以下のように表示が出れば、クライアント、サーバの両方が正しく動作していることになります。client.rbにはCGIのホスト名とディレクトリ名が埋め込まれていますので、好きに変更してください。
% ruby client.rb 4 + 5 = 9
というわけで、もし500なエラーが出た場合は、ウェブブラウザからアクセスしてみて、CGIとして正しく動作していることを確認してみたはいかがでしょうか。
ありがとうございます。
動かしてみたところ原因がわかりました。
http://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/xmlrpc-howto-ruby...
上記のサイト(XML-RPC HOWTO)のサンプルに誤記がありましたorz
修正した所上手く動きました。
誤記を知らせる方法があるといいのですが。
誤:s.add_hanlder("sample.sumAndDifference") do |a,b|
正:s.add_handler("sample.sumAndDifference") do |a,b|