NameError: uninitialized constant

I recently opened up pry, ran this:

test = TestGem.new

but got this:

NameError: uninitialized constant TestGem

Not greatly helpful.

It turned out that, despite adding it to my Gemfile and running

bundle

I still needed to require the file in pry.

However, the name of the file isn’t obvious if it’s not your own gem. E.g.

require 'guess_incorrect_gem_name'
LoadError: cannot load such file -- guess_incorrect_gem_name

Eventually it seemed to be correct:

require 'guess_gem_name'
=> true

but this didn’t work:

test = GuessGemName.new
NameError: uninitialized constant GuessGameName

but by looking at the gem file name via:

ls ~/.rvm/gems/ruby-2.1.5/gems/gem_name/lib/gem_name/gemname.rb

I eventually used:

require "gem_name/gemname"

which worked. E.g.

test = GemName.new
=> #<GemName:0x007fc8aae926c0>

This all seems a lot of guess work.

What I’d like to see (and I’m sure there must be a way of doing this but Google’ing and searching StackOverflow has not turned anything up) is something like this:

gem install gem_name
pry
gem_name.help
>
> # require with 
> require 'gem_name/gemname'
> # use with
> test = GemName.new

PixelDungeon Prayers – alpha testing

Just finished building PixelDungeon Prayers – a slight tweak of PixelDungeon that lets heroes pray to their favourite gods in the hope of getting assistance.

Very excited – this is my first Android game so looking forward to working on it more.

If you’re interested in helping make this game better you can subscribe to the Google Testing group here https://groups.google.com/forum/#!forum/pixeldungeon-prayers