Hi We have a Rails app running Edge Rails R8041, serving up a RESTful API and have recently had the need arise to add a SOAP API. After a bit of fighting with load paths setting the following in environment.rb: config.load_paths += %W( #{RAILS_ROOT}/vendor/rails/actionwebservice/lib ) config.load_paths += %W( #{RAILS_ROOT}/app/apis ) we had a quick controller running serving up a simple search facility, located in /app/controllers/api/clients_controller.rb with the following content: class Api::ClientsController < ApplicationController session :off web_service_dispatching_mode :delegated web_service :clients, ClientsService.new end There was then a corresponding API file in /app/apis/clients_service.rb containing: class ClientsAPI < ActionWebService::API::Base inflect_names false api_method :search, :expects => [{:query => :string}], :returns => [[Client::MiniClientRecord]] end class ClientsService < ActionWebService::Base web_service_api ClientsAPI def search(query) return [] if query.blank? return Client.search(query).collect {|c| c.to_client_record(true) } end end We also have a number of other services set up. This all works as expected when running in development mode, but when switching to production mode, or just enabling cache_classes=true in the development environment, the services cannot be accessed, instead you get a 404 saying no action responded to clients. The WSDL still works in production mode. We thought this may be an issue with having the controllers in the nested API folder, but moving them into the root controllers folder produced the same issue. Removing similar named unnested controllers (i.e. /controllers/clients_controller.rb) also failed to work. Does anyone have any insight into why these are not working, or could share details of how they are running and configuring Rails 2 with ActionWebService? It seems the documentation is now way out of date since it has been removed from the core rails package, and DHH''s promise of it just being as simple as re-including AWS doesn''t quite ring true. Regards, Elliot -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I forgot to mention, switching to layered dispatching resulted in a similar message, but saying no action responded to rpc, and switching to direct dispatching did not work at all. Thanks again, Elliot -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
buenos79-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2008-Jan-03 20:44 UTC
Re: Using ActionWebService with Edge Rails/Rails 2.0
Did you ever figure out what was going on with this? I seem to have the same problem. Inside the action_controller_dispatcher.rb file the following code doesn''t seem to be executed the first time the class loads: base.add_web_service_api_callback do |klass, api| if klass.web_service_dispatching_mode == :direct klass.class_eval ''def api; dispatch_web_service_request; end'' end end base.add_web_service_definition_callback do |klass, name, info| if klass.web_service_dispatching_mode == :delegated klass.class_eval "def #{name}; dispatch_web_service_request; end" elsif klass.web_service_dispatching_mode == :layered klass.class_eval ''def api; dispatch_web_service_request; end'' end end In cases where the class is cached, it never is executed, and never defines the api methods. On Nov 27 2007, 9:59 am, Elliot Bowes <rails-mailing-l...@andreas- s.net> wrote:> I forgot to mention, switching to layered dispatching resulted in a > similar message, but saying no action responded to rpc, and switching to > direct dispatching did not work at all. > > Thanks again, > > Elliot > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---