Ruby での XML-RPC の使い方を教えてください。


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)
||<

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/11/29 08:38:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:iwadon No.1

回答回数60ベストアンサー獲得回数13

ポイント60pt

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として正しく動作していることを確認してみたはいかがでしょうか。

id:garyo

ありがとうございます。

動かしてみたところ原因がわかりました。

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|





[2006-11-29 08:25:29] INFO  WEBrick 1.3.1
[2006-11-29 08:25:29] INFO  ruby 1.8.5 (2006-08-25) [i386-mswin32]
[2006-11-29 08:25:29] INFO  WEBrick::HTTPServer#start: pid=1704 port=8080
[2006-11-29 08:25:57] ERROR CGIHandler: C:/ruby/server/XMLRPCserver.rb:
C:/ruby/server/XMLRPCserver.rb:5: undefined method `add_hanlder' for #<XMLRPC::CGIServer:0x293d8b4> (NoMethodError)
[2006-11-29 08:25:57] ERROR CGIHandler: C:/ruby/server/XMLRPCserver.rb exit with 1
2006/11/29 08:37:11
  • id:iwadon
    ><blockquote>誤記を知らせる方法があるといいのですが。</blockquote><
    誤記自体は原文(http://www.ibiblio.org/pub/Linux/docs/HOWTO/XML-RPC-HOWTO)からそのまま引き継がれたもののようですので、
    原文の著者であるEric Kiddさん、もしくはそのRubyのサンプルの提供者であるMichael Neumannさんにご連絡してみてはいかがでしょうか。
  • id:garyo
    iwadonさん、ありがとうございます。
    http://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/japanese.html
    上記をみて
    Linux Japanese FAQ Project のJF プロジェクトと翻訳者の方にメールを送付いたしました。

    「原文の著者であるEric Kiddさん、もしくはそのRubyのサンプルの提供者であるMichael Neumannさん」
    全世界のRuby初心者の方のためにそうしたいのですが、英文メールは苦手ですorz

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません