gem and uninitialized constant

J

John Franey

I want to use NetAddr 1.2 with gems 0.9.2 and ruby 1.8.5 on Suse 10.2.
The lines of code:

require 'rubygems'
gem 'netaddr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

The error: uninitialized constant NetAddr (NameError)


This works:

require 'rubygems'
require_gem 'netaddr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

But I get the warning: "require_gem is obsolete. Use gem instead."

Any comments?

Thanks
 
B

Brian Candler

I want to use NetAddr 1.2 with gems 0.9.2 and ruby 1.8.5 on Suse 10.2.
The lines of code:

require 'rubygems'
gem 'netaddr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

The error: uninitialized constant NetAddr (NameError)


This works:

require 'rubygems'
require_gem 'netaddr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

But I get the warning: "require_gem is obsolete. Use gem instead."

Have you tried:

require 'rubygems'
require 'netaddr'

?
(Newer versions of rubygems replace 'require' directly)
 
J

John J. Franey

Brian,

Thanks for responding:

This code:

require 'rubygems'
require 'netaddr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

gives:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require': no such file to load -- netaddr (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
from ci.rb:2

This code:

require 'rubygems'
require 'net_addr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

works.

Now, how am I supposed to learn the right string to put into the require
call. The command to install was:

gem install netaddr


I don't remember why I guessed 'net_addr'


John
 
P

Phillip Gawlowski

John said:
Brian,

Thanks for responding:

This code:

require 'rubygems'
require 'netaddr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

gives:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require': no such file to load -- netaddr (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
from ci.rb:2

This code:

require 'rubygems'
require 'net_addr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

works.

Now, how am I supposed to learn the right string to put into the require
call. The command to install was:

gem install netaddr

If the gem generates documentation, I'd look there. Otherwise, look into
your /usr/lib/ruby/gems/1.8/name_of_gem directories for a README or code
code examples. In case you didn't know it gem_server launches a small
server, which makes the RDoc documentation accessible (in case the
developer was smart enough to include such a thing ;)

Otherwise, you might take your chances and even look at the gem's
homepage. in this case, it probably is http://netaddr.rubyforge.org


P.S.:
A: Because it makes reading replies difficult.
Q: Why is top-posting bad?


--
Phillip "CynicalRyan" Gawlowski
http://cynicalryan.110mb.com/

Rule of Open-Source Programming #1:

Don't whine unless you are going to implement it yourself.
 
B

bbiker

If the gem generates documentation, I'd look there. Otherwise, look into
your /usr/lib/ruby/gems/1.8/name_of_gem directories for a README or code
code examples. In case you didn't know it gem_server launches a small
server, which makes the RDoc documentation accessible (in case the
developer was smart enough to include such a thing ;)

Otherwise, you might take your chances and even look at the gem's
homepage. in this case, it probably ishttp://netaddr.rubyforge.org

P.S.:
A: Because it makes reading replies difficult.
Q: Why is top-posting bad?

--
Phillip "CynicalRyan" Gawlowskihttp://cynicalryan.110mb.com/

Rule of Open-Source Programming #1:

Don't whine unless you are going to implement it yourself.- Hide quoted text -

- Show quoted text -

I got caught in the same puzzle that the OP got trapped.

A gem has a name "gemname" which is used to install --- gem install
gemname
A "require" loads the gem and needs to know the gem's base
filename .. which is the filename without an extension.
Usually (probably 99% of time), the gemname and the base filename are
the same although it is not a requirement.
A gem filename may have "rb" as an extension but it could also have
"so" as an extension ... 'require' is smart enough to look
for valid extensions.

As CynicalRyan stated, you have to dig into the documentation and hope
to find the information.

In the case of the netaddr gem, the example in the documentation is
outdated. Only by looking at the list of netaddr's files would you
have seen "net_addr.rb"
 
B

Brian Candler

This code:

require 'rubygems'
require 'net_addr'
ipadd = NetAddr::CIDR.create("192.9.200.0/24")

works.

Now, how am I supposed to learn the right string to put into the require
call.

I'd just do
ls -lR /usr/lib/ruby/gems/1.8/gems/netaddr*
 
J

John J. Franey

bbiker said:
I got caught in the same puzzle that the OP got trapped.

A gem has a name "gemname" which is used to install --- gem install
gemname
A "require" loads the gem and needs to know the gem's base
filename .. which is the filename without an extension.
Usually (probably 99% of time), the gemname and the base filename are
the same although it is not a requirement.
A gem filename may have "rb" as an extension but it could also have
"so" as an extension ... 'require' is smart enough to look
for valid extensions.

As CynicalRyan stated, you have to dig into the documentation and hope
to find the information.

In the case of the netaddr gem, the example in the documentation is
outdated. Only by looking at the list of netaddr's files would you
have seen "net_addr.rb"


I got good responses to this question thanks. Basically, the answer is
"dig". I can do and did in this case. Digging won't be the best way after
someone has already solved the problem with a command, which is what I was
fishing for. Thanks for you help and understanding.

John
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top