2010-03-03 4 views
0

Je travaille avec mécaniser et avoir des problèmes avec l'héritage lors de tests dans un environnement de rails, en utilisant script/console.Problème avec Ruby mechanize et l'héritage

Quand j'écris comme ceci:

require 'rubygems' 
require 'mechanize' 

agent = WWW::Mechanize.new 
agent.get 'http://www.google.com' 

Tout fonctionne très bien. Mais lorsque je tente de créer une sous-classe de WWW :: Mechanize comme ceci:

require 'rubygems' 
require 'mechanize' 

class Alfa < WWW::Mechanize; end 

agent = Alfa.new 
agent.get 'http://www.google.com' 

Je reçois l'erreur suivante:

NoMethodError: Vous avez un objet nul quand on ne m'y attendais pas! L'erreur est survenue lors de l'évaluation nil.parse de /Library/Ruby/Gems/1.8/gems/mechanize-0.9.3/lib/www/mechanize/page.rb:77:in `analyseur »

Am I Il manque quelque chose?

Merci à l'avance

+0

avez-vous réellement essayé de creuser dans la source de mécaniser à ladite page pour voir ce qui est là? –

+0

Oui, j'ai regardé le code pendant un certain temps, mais je suppose que je dois faire quelque chose de plus sur la sous-classe. – thiagobrandam

+0

Avez-vous essayé de placer votre classe "Alfa" dans le même espace de nom que Mechanize? – Aurril

Répondre

2

Lorsque vous sous-classe WWW :: Mechanize, aucun analyseur HTML est fourni: c'est-ce que la ligne d'erreur vous indique en fait.

Cela fonctionne:

class Agent < WWW::Mechanize 
end 
a = Agent.new 
a.html_parser = Nokogiri::HTML 
a.get 'http://www.google.com' 
+0

Merci i-blis, je pensais que ces étapes d'installation étaient faites automatiquement par la classe Page sous-jacente. – thiagobrandam

Questions connexes