12. Ruby での XML-RPC の使い方

(XML-RPC HOWTO のこの章は Michael Neumann が気前よく 提供してくれました。)

Ruby はオブジェ クト指向スクリプト言語です。既に日本では多くの愛好者がおり、他所でも 人気が出つつあります。

Ruby で XML-RPC を使うには、初めに吉田正人の xmlparser モジュー ル (James Clark の expat parser 用ラッパー) をインストールしなければ なりません。これは Ruby Application Archive で見つけられます。

そして次のコマンドを使って xmlrpc4r をインストールしなければなりません。

bash$ tar -xvzf xmlrpc4r-1_2.tar.gz
bash$ cd xmlrpc4r-1_2
bash$ su root -c "ruby install.rb"

12.1. Ruby クライアント

単純な Ruby クライアントを示します -

require "xmlrpc/client"

# Make an object to represent the XML-RPC server.
server = XMLRPC::Client.new( "xmlrpc-c.sourceforge.net", "/api/sample.php")

# Call the remote server and get our result
result = server.call("sample.sumAndDifference", 5, 3)

sum = result["sum"]
difference = result["difference"]

puts "Sum: #{sum}, Difference: #{difference}"

12.2. Ruby サーバ

単純な Ruby サーバを示します -

require "xmlrpc/server"

s = XMLRPC::CGIServer.new

s.add_hanlder("sample.sumAndDifference") do |a,b|
  { "sum" => a + b, "difference" => a - b }
end

s.serve

また、次のように書くこともできます。

require "xmlrpc/server"

s = XMLRPC::CGIServer.new

class MyHandler
  def sumAndDifference(a, b)
    { "sum" => a + b, "difference" => a - b }
  end
end

s.add_handler("sample", MyHandler.new)
s.serve

どちらのサーバも独立型で実行するには、プログラムの二行目を

s = XMLRPC::Server.new(8080)

に書きかえてください。