Perfektion
Perfektion

Reputation: 1

Ruby gem installed, but unable to require it

I've installed a number of gems, however when i go to 'require' them i get "no such file to load error":

~/Documents/Projects/Ruby Scripts/Domain » ./whois.rb
/System//Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in 'require': cannot load such file -- whois (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./whois.rb:3:in `<main>'

I have installed the gem and it appears to have installed sucessfully:

~ » gem install whois
Fetching: whois-4.0.1.gem (100%)
Successfully installed whois-4.0.1
Parsing documentation for whois-4.0.1
Installing ri documentation for whois-4.0.1
Done installing documentation for whois after 0 seconds
1 gem installed

Running gem list shows the gem installed as a local gem:

*** LOCAL GEMS ***

activesupport (5.1.0)
addressable (2.5.1)
...
whois (4.0.1)

Running gem env shows the gem path that i would expect as i am using rbenv:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.11
  - RUBY VERSION: 2.4.1 (2017-03-22 patchlevel 111) [x86_64-darwin16]
  - INSTALLATION DIRECTORY: /Users/perfektion/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
  - USER INSTALLATION DIRECTORY: /Users/perfektion/.gem/ruby/2.4.0
  - RUBY EXECUTABLE: /Users/perfektion/.rbenv/versions/2.4.1/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/perfektion/.rbenv/versions/2.4.1/bin
  - SPEC CACHE DIRECTORY: /Users/perfektion/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/perfektion/.rbenv/versions/2.4.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-16
  - GEM PATHS:
     - /Users/perfektion/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
     - /Users/perfektion/.gem/ruby/2.4.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/perfektion/.rbenv/versions/2.4.1/bin
     - /usr/local/Cellar/rbenv/1.1.0/libexec
     - /Users/perfektion/.rbenv/shims
     - /Users/perfektion/.rbenv/bin
     - /Users/perfektion/.rbenv/shims
     - /Users/perfektion/.rbenv/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

Checking the gem path for the gem whois and i can see it located there.

Strangely though irb seems to be able to locate the gem:

~/ » irb
irb(main):001:0> require 'whois'
=> true
irb(main):002:0> whois = Whois::Client.new
=> #<Whois::Client:0x007fbc121074c8 @timeout=10, @settings={}>

I have been troubleshooting this for about 24 hours now and i feel like i am losing my mind. This issue has only become apparent in the past 24-48 hours. Prior to that the scripts i was playing with were working fine.

Potentially Useful Info

I feel like it is something stupid, but can anyone see what i am doing wrong here that would be causing ruby to not be able to find these gems?

Thank you!

Update

Not sure why i didn't pick this up earlier, but in the top of my script i have:

#!/usr/bin/ruby

I am not sure why this worked before and it isn't now.

Thanks for the help everyone :)

Upvotes: 0

Views: 1675

Answers (3)

lucianosousa
lucianosousa

Reputation: 8334

when you type ./whois.rb you call the ruby system.

try use ruby ./whois.rb It will call the RVM/rbenv loaded ruby system

Upvotes: 1

Zachary Wright
Zachary Wright

Reputation: 24070

Whenever you try to run the file it's looking for the gem in the Ruby 2.0 directory. Whenever you do gem env it's showing 2.4.1 as your ruby version.

Keep in mind that with rbenv you can either set a local, global, or shell level version of ruby to run: https://github.com/rbenv/rbenv#rbenv-local

You can also create a .ruby-version file in a directory, and rbenv will look for that and use that version if it exists. Something is off between which version of ruby you are using to install the gem and which one is being used to run your whois script.

Upvotes: 1

Londerson Ara&#250;jo
Londerson Ara&#250;jo

Reputation: 336

Because ruby is trying to fetch the library from another path that is not the same as the one you installed the wois gem with rbenv. (What could be some conflict with rvm and rbenv, I do not know.)

Try to create a new folder, set ruby 2.4 locally with local rbenv <version> and then try to make require again.

Upvotes: 0

Related Questions