From: badboy Date: 2009-01-14T22:36:52+09:00 Subject: Re: Trying to parse an array of rss feeds without success Louis-pierre Lp.dahito schrieb: > hey folks, > > I'm trying to make a basic feeds parser... It works fine when I have one > feed only but as soon as I try to parse an array of feeds, it's gonna > parse it correctly but I won't be able to fetch any data out of it... > Here is my code... > > class Site > attr_accessor :domain, :name > > def initialize > @domain = domain > @name = name > end > end > > > a = Site.new > a.domain = "http://www.mininova.org/rss.xml" > a.name = "mininova" > > b = Site.new > b.domain = "http://static.demonoid.com/rss/0.xml" > b.name = "demonoid" > > c = Site.new > c.domain = "http://rss.thepiratebay.org/0" > c.name = "thepiratebay" > > allfeeds = [ a, b, c ] > > require 'rss/1.0' > require 'rss/2.0' > require 'open-uri' > > def parse_torrents(source) > # source = self.domain # url or local file > content = "" # raw content of rss feed will be loaded here > open(source) do |s| content = s.read end > RSS::Parser.parse(content, false) > end > > torrents = allfeeds.each { |feed| parse_torrents(feed.domain) } > > torrents.each { |t| puts t.channel.title } > > The error message I get is only on the last line of code... removing the > last line doesn't show any error message. > > Here is the message i get from RubyMate: > > NoMethodError: undefined method ‘channel’ for # > > at top level in global.rb at line 38 > method each in global.rb at line 38 > at top level in global.rb at line 38 > Program exited. > > I need help even though it's a pretty basic question... > > Thank you guys... the error message has all you need to get rid of this mistake. "...for #" Now start irb and type something like: irb> myarray = [1,2,3] irb> newarray = myarray.each { |i| i * 10 } irb> p newarray do you see it? now try Array#map: irb> myarray = [1,2,3] irb> newarray = myarray.map { |i| i * 10 } irb> p newarray see the difference?