rubyrubygemsxml-simple

Uninitialized constant XmlSimple, but I included the proper gem


I'm trying to use the XmlSimple gem in a script. My script looks like this:

#!/usr/bin/env ruby

gem 'xml-simple', '1.1.5'

xml = XmlSimple.xml_in('test_data.xml')

puts xml

This fails with the error:

./script.rb:5:in `<main>': uninitialized constant XmlSimple (NameError)

Why am I getting this error, and how do I fix it?


These common solutions to similar problems with gems haven't helped me:


Solution

  • You have activated the gem, by using the gem method, but you haven’t required it. This means the gem’s files are now on your load path, but they haven’t been loaded by the Ruby interpreter, so their contents aren’t available to your program.

    You simply need to add

    require 'xmlsimple'
    

    after the gem line.

    You don’t always need the gem method, you can just use require and the latest installed version of the gem will automatically be activated — but if you want to specify which version to use you need to use gem explicitly.