Using Rails 1.2.3 and ActionWebservice? with builtin soap4r or newest rc candidate (20070906) I get the following when passing an ActiveRecord? object:
Cannot map Scenario to SOAP/OM.
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:355:in `_obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:299:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:131:in `_obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:43:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:554:in `protect_mapping'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:531:in `protect_threadvars'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:547:in `protect_mapping'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:42:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol/marshaler.rb:35:in `ruby_to_soap'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol.rb:72:in `encode_request'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol.rb:70:in `map'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol.rb:70:in `encode_request'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/scaffolding.rb:76:in `invoke_submit'
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/scaffolding.rb:67:in `invoke_submit'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1095:in `send'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1095:in `perform_action_without_filters'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:632:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:638:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:438:in `call'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:637:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:634:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:619:in `perform_action_without_benchmark'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/rescue.rb:83:in `perform_action'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:430:in `send'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:430:in `process_without_filters'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:624:in `process_without_session_management_support'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/session_management.rb:114:in `process'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:330:in `process'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:41:in `dispatch'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:168:in `process_request'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:143:in `process_each_request!'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:109:in `with_signal_handler'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:142:in `process_each_request!'
/usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/fcgi.rb:612:in `each_cgi'
/usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/fcgi.rb:609:in `each'
/usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/fcgi.rb:609:in `each_cgi'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:141:in `process_each_request!'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:55:in `process!'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:25:in `process!'
/www/capplan_ws-dv/public/dispatch.fcgi:24
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:355:in `_obj2soap': Cannot map HashWithIndifferentAccess? to SOAP/OM: (SOAP::Mapping::MappingError?) [NESTED]
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:299:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:131:in `_obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol/marshaler.rb:186:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol/marshaler.rb:183:in `each'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol/marshaler.rb:183:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:64:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:63:in `each'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:63:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:342:in `_obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/encodedregistry.rb:299:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:131:in `_obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:43:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:554:in `protect_mapping'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:531:in `protect_threadvars'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:547:in `protect_mapping'
/usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7.90.20070906/lib/soap/mapping/mapping.rb:42:in `obj2soap'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol/marshaler.rb:35:in `ruby_to_soap'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol.rb:72:in `encode_request'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol.rb:70:in `map'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/protocol/soap_protocol.rb:70:in `encode_request'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/scaffolding.rb:76:in `invoke_submit'
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.3/lib/action_web_service/scaffolding.rb:67:in `invoke_submit'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1095:in `send'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1095:in `perform_action_without_filters'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:632:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:638:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:438:in `call'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:637:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:634:in `call_filter'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:619:in `perform_action_without_benchmark'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/rescue.rb:83:in `perform_action'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:430:in `send'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:430:in `process_without_filters'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:624:in `process_without_session_management_support'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/session_management.rb:114:in `process'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:330:in `process'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:41:in `dispatch'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:168:in `process_request'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:143:in `process_each_request!'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:109:in `with_signal_handler'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:142:in `process_each_request!'
/usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/fcgi.rb:612:in `each_cgi'
/usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/fcgi.rb:609:in `each'
/usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/fcgi.rb:609:in `each_cgi'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:141:in `process_each_request!'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:55:in `process!'
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:25:in `process!'
/www/capplan_ws-dv/public/dispatch.fcgi:24
I modified line 354 in encodedregistry.rb to print the cause as follows:
raise MappingError?.new("Cannot map #{ obj.class.name } to SOAP/OM: #{cause}", cause)
which then produces:
Cannot map Scenario to SOAP/OM: Cannot map HashWithIndifferentAccess? to SOAP/OM:
I'm a bit stuck as to how to move forward. Any workarounds/thoughts?