What do I need to do to get Hash.from_xml() to work?

Amit Kumar Gupta picture Amit Kumar Gupta · Jul 14, 2012 · Viewed 9.1k times · Source

I installed 'ActiveSupport' and required 'active_support' in my code, but I get a "No Method Error" when I try to use the Hash.from_xml() method.

What am I missing?

$ gem list

returns:

\*** LOCAL GEMS \***

activesupport (3.2.6)  
bundler (1.1.4)  
i18n (0.6.0)  
json (1.7.3)  
mime-types (1.19)  
multi_json (1.3.6)  
rake (0.9.2.2)  
rest-client (1.6.7)  
rubygems-bundler (1.0.3)  
rvm (1.11.3.5)

And:

$ ruby -v

returns:

ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0]

The contents of file.rb are:

require 'active_support'  
require 'rest-client'  
require 'json'  
token = "xxx"  
user = "xxx"  
survey_id = "xxx"  
responses_from_api = RestClient.get "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?Request=getLegacyResponseData&User=#{user}&Token=#{token}&Version=2.0&SurveyID=#{survey_id}&Format=XML"  
responses = Hash.from_xml(responses_from_api).to_json  
puts responses

And:

$ ruby file.rb

returns:

file.rb:8:in `<main>': undefined method `from_xml' for Hash:Class (NoMethodError)

Answer

mu is too short picture mu is too short · Jul 14, 2012

Just require 'active_support' doesn't do very much, you have to pull in the pieces sort of by hand. If you want all of ActiveSupport:

require 'active_support/all'

or if you just want the Hash extensions:

require 'active_support/core_ext/hash'