Search code examples
ruby-on-rails-3savon

Savon breaks out of the box with "TypeError: can't convert String into Hash"


I just installed Savon 2.0.2 on Rails 3.2.11. When I try to create a new client in the console, I get TypeError: can't convert String into Hash:

1.9.3-p362 :003 > client = Savon::Client.new("http://www.webservicex.net/uszip.asmx?WSDL")
TypeError: can't convert String into Hash
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `merge'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `initialize'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `new'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `initialize'
    from (irb):3:in `new'
    from (irb):3
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Any idea why this could be happening? It's a brand new, almost-vanilla Rails app, so I don't understand what could be going wrong.


Solution

  • Try:

    client = Savon::Client.new(wsdl: "http://www.webservicex.net/uszip.asmx?WSDL")
    

    or

    client = Savon.client(wsdl: "http://www.webservicex.net/uszip.asmx?WSDL")