Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Gem allows you to use our RubyOnRails project like XMLRPC server
Ruby
branch: master

Merge pull request #3 from RushOnline/fix-readme

bugfix: "Uncaught exception: unexpected return in method ..."
latest commit dc44677cb2
@alexkv authored
Failed to load latest commit information.
lib Merge branch 'master' of https://github.com/lhotski/rails-xmlrpc
test first commit
.gitignore corrected README
README.rdoc bugfix: "Uncaught exception: unexpected return in method ..."
Rakefile
init.rb first commit
rails-xmlrpc.gemspec increment version

README.rdoc

rails-xmlrpc

Rails has native support for xmlrpc. Most people are familiar with the 'xmlrpc/client' library. The 'xmlrpc/server' library examples mostly make an assumption that you will run a standalone server.

rails-xmlrpc allows you to instead expose normal Rails controller methods via XMLRPC, tied to an xmlrpc endpoint route in your app.

Install

Run in terminal:

gem install rails-xmlrpc

For Rails 2

Add row to environment.rb inside Rails::Initializer block:

config.gem "rails-xmlrpc"

Add row to routes.rb

map.connect 'api/xmlrpc', :controller => 'my_controller', :action => 'xe_index'

For Rails 3

Add row to Gemfile:

gem "rails-xmlrpc"

Set up a route in your routes.rb file

match 'api/xmlrpc' => 'my#xe_index'

Examples

Add this code to your controller:

class MyController < ApplicationController
  exposes_xmlrpc_methods

  add_method 'Container.method_name' do
    'Hello World'
  end

end

Then, pointing an XMLRPC client at the defined route, your normal controller actions will handle the requests.

require 'xmlrpc/client'
server = XMLRPC::Client.new2("http://localhost:3000/api/xmlrpc")
server.call("Container.method_name")

To use a custom namespace prefix on all exposed methods (for example, if using someone else's specified protocol like MetaWeblog), declare a method_prefix:

class MyApiController < ApplicationController
  exposes_xmlrpc_methods :method_prefix => "metaWeblog."

  # This method will be exposed externally as "metaWeblog.newPost()"
  def newPost(blogid, username, password, struct, publish)
  ...
  end
end

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don't break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright © 2011 Aleksei Kvitinskii, released under the MIT license.

Something went wrong with that request. Please try again.