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:
- This error will come up if one forgets to explicitly include the relevant gem. As you can see from my MVCE, I have not made this mistake.
- Sometimes, explicitly requiring the correct version of the gem solves this problem. However, I am already requiring the most recent version of this gem. I have also double-checked that this is the version of the gem I have installed on my system.
- According to the XmlSimple documentation, the
XmlSimpleclass should most certainly be defined when this gem is included. I'm not trying to use a class that doesn't exist.
You have activated the gem, by using the
gemmethod, 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
after the
gemline.You don’t always need the
gemmethod, you can just userequireand the latest installed version of the gem will automatically be activated — but if you want to specify which version to use you need to usegemexplicitly.