Can't load gems

I have installed rvm on my Mac OSX and Ruby 1.9.3 and I also installed
rails.

I created my own gem which is successfully installed with gem install.

If I enter the command “gem list”, I get a long list of gems, mostly
rails and also my own installed gem.

But if I try to require any of these gems in my source code,
‘actionmailer’ for instance, I get a load error

in `require’: cannot load such file – actionmailer (LoadError)

Here is my source code:

puts $:

require ‘actionmailer’

and here is the output:

/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/x86_64-darwin12.2.0
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/vendor_ruby/1.9.1
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin12.2.0
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/vendor_ruby
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-darwin12.2.0
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in
require': cannot load such file -- actionmailer (LoadError) from /Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:inrequire’
from …/ruby-1.9.3/test_timecode.rb:3:in `’

The gems are actually installed in
/Users/kary/.rvm/gems/ruby-1.9.3-p286/gems

bash-3.2$ rvm gemdir
/Users/kary/.rvm/gems/ruby-1.9.3-p286

Why can’t Ruby find my gems when I require them?

Thanks in advance

On Feb 13, 2013, at 16:37 , Loran K. [email protected] wrote:

Why can’t Ruby find my gems when I require them?

To start, make sure that which gem and which ruby are answering with
the same install.

Ryan D. wrote in post #1096802:

On Feb 13, 2013, at 16:37 , Loran K. [email protected] wrote:

Why can’t Ruby find my gems when I require them?

To start, make sure that which gem and which ruby are answering with
the same install.

Sure, thanks.

bash-3.2$ which ruby
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
bash-3.2$ which gem
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/bin/gem
bash-3.2$ gem list actionmailer

*** LOCAL GEMS ***

actionmailer (3.2.9)
bash-3.2$ gem which actionmailer
ERROR: Can’t find ruby library file or shared library actionmailer

On Feb 13, 2013, at 21:21 , Loran K. [email protected] wrote:

bash-3.2$ which ruby
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
bash-3.2$ which gem
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/bin/gem
bash-3.2$ gem list actionmailer

*** LOCAL GEMS ***

actionmailer (3.2.9)
bash-3.2$ gem which actionmailer
ERROR: Can’t find ruby library file or shared library actionmailer

% gem which minitest
ERROR: Can’t find ruby library file or shared library minitest

% gem contents minitest | grep lib
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/hoe/minitest.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/autorun.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/benchmark.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/hell.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/mock.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/parallel_each.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/pride.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/spec.rb
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/unit.rb

% gem which minitest/unit
/Library/Ruby/Gems/1.8/gems/minitest-4.6.0/lib/minitest/unit.rb

There is no minitest.rb so it bitches. There is a minitest/unit.rb so it
finds it. The easiest way to figure that out is to just look. I used
gem contents to do that but I also often just go into the code and
poke around.

In your case, there is no actionmailer.rb, however, there is an
action_mailer.rb

10006 % pwd
/Users/ryan/Work/git/rails/actionmailer/
10007 % l lib
total 8
0 action_mailer/ 8 action_mailer.rb 0 rails/

On Feb 13, 2013, at 23:59 , Ryan D. [email protected] wrote:

In your case, there is no actionmailer.rb, however, there is an action_mailer.rb

P.S. Sorry I didn’t see that sooner. I don’t primarily do rails so I
didn’t notice.

Ryan D. wrote in post #1096838:

There is no minitest.rb so it bitches. There is a minitest/unit.rb so it
finds it. The easiest way to figure that out is to just look. I used
gem contents to do that but I also often just go into the code and
poke around.

In your case, there is no actionmailer.rb, however, there is an
action_mailer.rb

Thanks Ryan, for that help. Actually, I was just using actionmailer as
an example, because it came at the top of my list of installed gems.

My real problem is that I cannot load my own gem which I created and
installed myself. I call it 'timecode.

bash-3.2$ gem list timecode

*** LOCAL GEMS ***

timecode (0.0.1)
bash-3.2$ gem contents timecode | grep lib
/Users/kary/.rvm/gems/ruby-1.9.3-p286/gems/timecode-0.0.1/lib/timecode.rb
bash-3.2$ gem which timecode
ERROR: Can’t find ruby library file or shared library timecode

As you can see, there is a lib/timecode.rb yet it won’t load.

/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in
`require’: cannot load such file – timecode (LoadError)

Should I be concerned that I do not see any gems directory in my
LOAD_PATH?

/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/x86_64-darwin12.2.0
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/vendor_ruby/1.9.1
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin12.2.0
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/vendor_ruby
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1
/Users/kary/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-darwin12.2.0

bash-3.2$ gem env
RubyGems Environment:

  • RUBYGEMS VERSION: 1.8.24
  • RUBY VERSION: 1.9.3 (2012-10-12 patchlevel 286)
    [x86_64-darwin12.2.0]
  • INSTALLATION DIRECTORY: /Users/kary/.rvm/gems/ruby-1.9.3-p286
  • RUBY EXECUTABLE: /Users/kary/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
  • EXECUTABLE DIRECTORY: /Users/kary/.rvm/gems/ruby-1.9.3-p286/bin
  • RUBYGEMS PLATFORMS:
    • ruby
    • x86_64-darwin-12
  • GEM PATHS:
    • /Users/kary/.rvm/gems/ruby-1.9.3-p286
    • /Users/kary/.rvm/gems/ruby-1.9.3-p286@global
  • GEM CONFIGURATION:
    • :update_sources => true
    • :verbose => true
    • :benchmark => false
    • :backtrace => false
    • :bulk_threshold => 1000
  • REMOTE SOURCES:

bash-3.2$ echo $GEM_PATH
/Users/kary/.rvm/gems/ruby-1.9.3-p286:/Users/kary/.rvm/gems/ruby-1.9.3-p286@global

On Feb 14, 2013, at 10:46, Loran K. [email protected] wrote:

bash-3.2$ gem which timecode
ERROR: Can’t find ruby library file or shared library timecode

As you can see, there is a lib/timecode.rb yet it won’t load.

Lets assume that your rubygems is not borked, yet.

Show me ‘gem spec timecode’

On Feb 14, 2013, at 12:07 , Loran K. [email protected] wrote:

Show me ‘gem spec timecode’
version: 0.0.1
cert_chain: []
date: 2013-02-14 00:00:00.000000000 Z
dependencies: []
description: A library to support drop-frame and non-drop-frame
timecodes
email: [email protected]
executables: []
extensions: []
extra_rdoc_files: []
files: []

BOOM. I suggest you use a tool like Hoe to manage your gem. It deals
with all the gem/project minutia for you.

Ryan D. wrote in post #1096950:

On Feb 14, 2013, at 10:46, Loran K. [email protected] wrote:

bash-3.2$ gem which timecode
ERROR: Can’t find ruby library file or shared library timecode

As you can see, there is a lib/timecode.rb yet it won’t load.

Lets assume that your rubygems is not borked, yet.

Show me ‘gem spec timecode’

borked ???

To avoid conflicts, I have renamed my gem fps-timecode. But it behaves
the same.

bash-3.2$ gem spec fps-timecode
— !ruby/object:Gem::Specification
name: fps-timecode
version: !ruby/object:Gem::Version
version: 0.0.1
prerelease:
segments:

  • 0
  • 0
  • 1
    platform: ruby
    authors:
  • Loran K.
    autorequire:
    bindir: bin
    cert_chain: []
    date: 2013-02-14 00:00:00.000000000 Z
    dependencies: []
    description: A library to support drop-frame and non-drop-frame
    timecodes
    email: [email protected]
    executables: []
    extensions: []
    extra_rdoc_files: []
    files: []
    homepage:
    licenses: []
    post_install_message:
    rdoc_options: []
    require_paths:
  • .
    required_ruby_version: !ruby/object:Gem::Requirement
    none: false
    requirements:
      • ! ‘>=’
      • !ruby/object:Gem::Version
        version: ‘1.9’
        required_rubygems_version: !ruby/object:Gem::Requirement
        none: false
        requirements:
      • ! ‘>=’
      • !ruby/object:Gem::Version
        version: ‘0’
        requirements: []
        rubyforge_project:
        rubygems_version: 1.8.24
        signing_key:
        specification_version: 3
        summary: Implements timecode class
        test_files: []

Ryan D. wrote in post #1096979:

On Feb 14, 2013, at 12:07 , Loran K. [email protected] wrote:

Show me ‘gem spec timecode’
version: 0.0.1
cert_chain: []
date: 2013-02-14 00:00:00.000000000 Z
dependencies: []
description: A library to support drop-frame and non-drop-frame
timecodes
email: [email protected]
executables: []
extensions: []
extra_rdoc_files: []
files: []

BOOM. I suggest you use a tool like Hoe to manage your gem. It deals
with all the gem/project minutia for you.

I gather that you see something wrong with the gemspec, though you don’t
say what exactly.

I fiddled with it a little and now it works! Thanks for your help in
pointing me to the problem. Most likely it was an incorrect
require_path.