I\'ve built my first gem but I don\'t seem to be able to get it to install correctly. I can issue the command
sudo gem install ceilingfish-toto
gem which ceilingfish-toto
looks through the gem require path for a file named ceilingfish-toto.rb. Since there isn't one, it returns nothing. What would work for you is gem which toto
, but since lib/
is not included in your gem spec, the lib files are not installed, so it doesn't exist.
Rerunning rake gemspec
might fix the problem.
As an aside, you can check whether a gem is installed by its name by using gem list ceilingfish-toto
which should show you it is installed, regardless of the files it has(it will also list the versions installed).
OK, so the problem here appears to be that there was a problem with my gemspec file. From what I can tell there absolutely has to be a file with the name lib/gem-name.rb
so in this case I needed lib/ceilingfish-toto.rb
.
This doesn't seem to be true for some other gems to operate correctly. For example mime-types
or rest-client
, even though they do not show up with gem which
, they do actually work.
I'm not sure this is entirely correct yet, I'm sure there should be a way to get a gem with a hyphen in the name to behave correctly. If I find out I'll post back and let y'all know.
It's not the hyphen.
gem which
searches for library files in gems, not gems. Compare:
$ gem which haml
/home/dave/.gem/ruby/1.8/gems/haml-3.0.12/lib/haml.rb
$ ls haml-3.0.12/lib/h*
haml haml.rb haml.rbc
Peachy. Note the existance of lib/haml.rb
.
$ gem which rails
ERROR: Can't find ruby library file or shared library rails
$ ls rails-2.3.8/lib/r*
rails_generator.rb railties_path.rb rubyprof_ext.rb ruby_version_check.rb
There is no lib/rails.rb
. But try:
$ gem which railties_path # not a gem
/home/dave/.gem/ruby/1.8/gems/rails-2.3.8/lib/railties_path.rb
So gem which ceilingfish-toto
throws an error even when ceilingfish-toto
is installed because there is no lib/ceilingfish-toto.rb
file (there's not even a lib
folder).