ActionWebService


#1

Good Day,

I use ActionWebService for creation Blog API trough creation XMLRPC
controller

class XmlrpcController < ApplicationController
web_service_dispatching_mode :layered

web_service(:blogger) { BloggerService.new() }
end

class BloggerAPI < ActionWebService::API::Base
inflect_names false

api_method :newPost, :returns => [:string], :expects => [
{:appkey=>:string},
{:blogid=>:string},
{:username=>:string},
{:password=>:string},
{:content=>:string},
{:publish=>:bool}
]

end

class BloggerService < ActionWebService::Base
web_service_api BloggerAPI

def initialize
@postid = 0
end

def newPost(key, id, user, pw, content, publish)
$stderr.puts “id=#{id} user=#{user} pw=#{pw},
content=#{content.inspect} [#{publish}]”
(@postid += 1).to_s
end

end

in Routes.rb I have row: map.connect “/xmlrpc/api”, :controller =>
“xmlrpc”, :action => “api”

When I use development environment with set in config/
development.rb: config.cache_classes = false

For first call to blog API - I always take:

ActionController::UnknownAction (No action responded to api. Actions:
access_denied, authorization_failure!, authorized?, current_user,
current_user=, current_user?, login_from_cookie, login_required,
protected?, reject_unconfirmed_user, render_without_selector,
store_location, stub_user, and wsdl):
/vendor/rails/actionpack/lib/action_controller/filters.rb:617:in
`call_filters’

But next call always processed correct.

When I use production environment with set in config/production.rb:
config.cache_classes = true

I always take: ActionController::UnknownAction

How I can correct that?

Thanks


#2

May be that will usefully for some body.

For start correct work,
I changed:

class XmlrpcController < ApplicationController

to

class XmlrpcController < ActionController::Base


#3

I was able to fix it.

ActionWebService is located in

vendor/plugins/datanoise-actionwebservice-c076ac1

$ ls vendor/plugins/datanoise-actionwebservice-c076ac1
actionwebservice.gemspec
CHANGELOG
examples
generators
install.rb
lib
MIT-LICENSE
Rakefile
README
setup.rb
test
TODO

I’ve added a new file

vendor/plugins/datanoise-actionwebservice-c076ac1/init.rb

with the following line:

require ‘actionwebservice’

After this change I’ve got the following error:

uninitialized constant
ActionWebService::Dispatcher::ActionController::RoutingError (NameError)
from
/home/vir/work/mmsd_iface/app/controllers/application_controller.rb:22

I’ve fixed it by replacing all occurances of ActionController module
with “::ActionController”. With double colon I explicitly stated that
it’s a top-level module.

After this change everything worked fine.