Oh, this was working SO nicely until I upgraded the OS…
I tried running my little site spider to keep my archive up-to-date
and I got an error about mechanize not being available. No problem,
I’ll just fire up gem and install it. Not so fast…
It requires hpricot and
sudo gem install hpricot
gave me errors that led me to the realization that new OS meant new
compilers and the installation of XCode 3.0. (I’m quite new to the CLI
stuff.)
Once I did that, hpricot and mechanize both installed okay. But I get:
/usr/local/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/mechanize/
inspect.rb:44: undefined method pretty_inspect' for classWWW::Mechanize::Page’ (NameError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:
27:in require' from /usr/local/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/ mechanize.rb:42 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb: 32:inrequire’
from scrape.rb:13
stuff.)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:
32:in `require’
from scrape.rb:13
Clues?
Thanks.
–Colin
Make sure you use
sudo install gem_name_here --include-dependencies
Also make sure your spider has the right shebang at the beginning. #!
usr/bin/or/whatever
Using the default Ruby on Leopard is definitely feasible now, but the
path might be different from your old one.
Now make sure you’re requiring all the right stuff.
require ‘rubygems’
require ‘gem_name_here’
require ‘rubygems’ # the module for Ruby that keeps modules up to
date
require ‘cgi’
require ‘open-uri’ # http module used by mechanize
require ‘hpricot’
require ‘mechanize’ # a nicely wrapped browser client
Agent = WWW::Mechanize.new # there’s one browser agent we’ll use
globally, so it stores the cookies
Same error still:
MacBookPro:spider colin$ ruby scrape.rb
/usr/local/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/mechanize/
inspect.rb:44: undefined method pretty_inspect' for classWWW::Mechanize::Page’ (NameError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:
27:in require' from /usr/local/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/ mechanize.rb:42 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb: 32:inrequire’
from scrape.rb:14
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:
27:in require' from /usr/local/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/ mechanize.rb:42 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb: 32:in require’
from scrape.rb:14
I am not sure this is leopard-related. I have the same bug submitted to
the scRUBYt! lighthouse:
and AFAIK this happens both on win32 and linux (ubuntu, at least). So I
believe this is a mechanize bug, introduced in 0.6.10. I have tried to
contact Aaron P. but got no response. I guess we should file a
bug.