2009-08-28 11 views
0

Désolé, cela peut être une question de base/stupide/noob - J'essaie juste de modifier un script Ruby existant - il fonctionne sur mon Mac, mais ne fonctionne pas sous Ubuntu 9.04.ruby ​​noob: /usr/lib/ruby/1.8/rss/rss.rb:922:in `have_required_elements? ': Méthode non définie

L'erreur est la suivante:

/usr/lib/ruby/1.8/rss/rss.rb:922:in `have_required_elements?': undefined method `have_required_elements?' for "App Store Reviews for ":String (NoMethodError) 
    from /usr/lib/ruby/1.8/rss/maker/base.rb:188:in `any?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:922:in `each' 
    from /usr/lib/ruby/1.8/rss/rss.rb:922:in `any?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:922:in `have_required_elements?' 
    from /usr/lib/ruby/1.8/rss/maker/base.rb:188:in `all?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:917:in `each' 
    from /usr/lib/ruby/1.8/rss/rss.rb:917:in `all?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:917:in `have_required_elements?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:962:in `tag' 
    from /usr/lib/ruby/1.8/rss/rss.rb:884:in `to_s' 
    from /usr/lib/ruby/1.8/rss/rss.rb:924:in `have_required_elements?' 
    from /usr/lib/ruby/1.8/rss/maker/base.rb:188:in `all?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:917:in `each' 
    from /usr/lib/ruby/1.8/rss/rss.rb:917:in `all?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:917:in `have_required_elements?' 
    from /usr/lib/ruby/1.8/rss/rss.rb:962:in `tag' 
    from /usr/lib/ruby/1.8/rss/rss.rb:1284:in `tag' 
    from /usr/lib/ruby/1.8/rss/rss.rb:884:in `to_s' 
    from ./appstore_reviews:215:in `write' 
    from ./appstore_reviews:215 
    from ./appstore_reviews:214:in `open' 
    from ./appstore_reviews:214 

qui utilise le bit rss de Ruby et d'essayer d'écrire le fichier RSS. Erreur provient de la ligne d'écriture de fichier:

... 
version = "2.0" 
destination = "appreviews_"+ARGV[0]+".xml" 
puts destination 
content = RSS::Maker.make(version) do |m| 
m.items.do_sort = true 

# a simple command-line presentation 
software.keys.sort.each do |software_key| 

m.channel.title = "App Store Reviews for ",software_key 
m.channel.link = "http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=",ARGV[1],"&mt=8" # need to put in link to itunes 
m.channel.description = "App Store Reviews for ",software_key 
... 

File.open(destination,"w") do |f| 
f.write(content) 
end 

Ceci est basé sur le code revue de l'application iPhone Scaper: link text

Avec quelques trucs flux RSS de base jeté link text

Merci à l'avance pour tout conseils/pointeurs. Chris

Répondre

1

Le message d'erreur concerne la chaîne n'ayant pas de méthode "have_required_elements?".

Selon http://www.ruby-doc.org/core-1.9/classes/RSS/Element.html RSS :: Element a une méthode avec ce nom. Vous appelez probablement une méthode avec un paramètre de type incorrect à un moment donné.

Cette ligne semble suspect:

m.channel.title = "App Store Reviews for ",software_key 

Êtes-vous tentez de concaténer deux chaînes? Dans ce cas, vous devez utiliser une opération plus au lieu d'une virgule. La virgule génère implicitement un tableau ici.

+0

Merci - sur le prochain problème maintenant ... mais au moins cette erreur est partie :) –

Questions connexes