Problem seeing classes in rubygem

W

Wes Gamble

Ruby 1.8.2

I am trying to take advantage of a Rubygem named RubyfulSoup (a port of
the PHP BeautifulSoup module).

I have installed the gem correctly (it shows up when I do gem -list) and
my require_gem statement succeeds.

However, when I go to instantiate one of the classes defined in this
gem, the call fails with:

unitialized constant: BeautifulSoup

on line 4 of my test case below.

Here is my test case:

require 'rubygems'
require_gem 'rubyful_soup', '>= 1.0.4'

parser = BeautifulSoup.new(%{"kajsdlfkjads"})

Does anyone understand why the class name inside of the rubyful_soup.rb
file cannot be seen successfully?

Thanks,
Wes
 
R

Ross Bamford

I have installed the gem correctly (it shows up when I do gem -list) and
my require_gem statement succeeds.

However, when I go to instantiate one of the classes defined in this
gem, the call fails with:

unitialized constant: BeautifulSoup

on line 4 of my test case below.

Here is my test case:

require 'rubygems'
require_gem 'rubyful_soup', '>= 1.0.4'

parser = BeautifulSoup.new(%{"kajsdlfkjads"})

require_gem does (by default) actually require anything inside the gem -
it's just used to tell Gems about version constraints you want to have.
You'll still have to require 'rubyful_soup' to actually load it.

note 1: In normal use, Gems patches require to automatically load gems
as needed, so you could have just had "require 'rubyful_soup'" and the
latest installed version would be installed. If you really do need that
version constraint, however, I think you have to keep the require_gem.

note 2: Gems does support an 'autorequire' attribute in a gem's spec
that allows it to automatically require a given file when the Gem itself
is required, but this is deprecated and rubyful soup doesn't appear to
use it.
 
D

Daniel Harple

Ruby 1.8.2

I am trying to take advantage of a Rubygem named RubyfulSoup (a
port of
the PHP BeautifulSoup module).

Python actually.
require 'rubygems'
require_gem 'rubyful_soup', '>= 1.0.4'

Unless you _really need_ version 1.0.4, you can drop this and just do
require 'rubyful_soup'.

-- Daniel
 
M

Mark Volkmann

require_gem does (by default) actually require anything inside the gem -

I assume you meant "doesn't" above. A caveat is what you mention below
regarding autorequire.
it's just used to tell Gems about version constraints you want to have.
You'll still have to require 'rubyful_soup' to actually load it.

note 1: In normal use, Gems patches require to automatically load gems
as needed, so you could have just had "require 'rubyful_soup'" and the
latest installed version would be installed. If you really do need that
version constraint, however, I think you have to keep the require_gem.

note 2: Gems does support an 'autorequire' attribute in a gem's spec
that allows it to automatically require a given file when the Gem itself
is required, but this is deprecated and rubyful soup doesn't appear to
use it.

Based on what you've said it seems that
1) There is no point in using require_gem unless you want to specify
version constraints instead of just using the newest version of the
gem.
2) Since autorequire is being deprecated, you should never just use
require_gem. You should also use a require to pull in a specific file
within the gem.

Does anyone disagree with these recommendations?
 
R

Ross Bamford

I assume you meant "doesn't" above.

Oops, yes, typo there.
Based on what you've said it seems that
1) There is no point in using require_gem unless you want to specify
version constraints instead of just using the newest version of the
gem.
2) Since autorequire is being deprecated, you should never just use
require_gem. You should also use a require to pull in a specific file
within the gem.

Yes, in fact I think that's what the Gems team now recommend.
 

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,780
Messages
2,569,608
Members
45,250
Latest member
Charlesreero

Latest Threads

Top