I''m trying to break this script into methods, but run into an error: thufir@ARRAKIS:~/projects/aggregator$ ruby rss2mysql.rb rss2mysql.rb:19: class definition in method body thufir@ARRAKIS:~/projects/aggregator$ The script is from: Practical Ruby Gems http://www.apress.com/book/view/9781590598115 Chapter 5 rss2mysql.rb follows: require ''rubygems'' require ''active_record'' require ''feed_tools'' require ''yaml'' def all db = YAML.load_file("database.yml") ActiveRecord::Base.establish_connection( :adapter => db["adapter"], :host => db["host"], :username => db["username"], :password => db["password"], :database => db["database"]) class Items < ActiveRecord::Base #runtime error end # If the table doesn''t exist, we''ll create it. unless Items.table_exists? ActiveRecord::Schema.define do create_table :items do |t| t.column :title, :string t.column :content, :string t.column :source, :string t.column :url, :string t.column :timestamp, :timestamp t.column :keyword_id, :integer t.column :guid, :string t.column :html, :string end end end feed_url = ''http://www.slashdot.org/index.rss'' feed=FeedTools::Feed.open(feed_url) feed.items.each do |feed_item| unless (Items.find_by_title(feed_item.title) \ or Items.find_by_url(feed_item.link) \ or Items.find_by_guid(feed_item.guid)) puts "processing item ''#{feed_item.title}'' - new" Items.new do |newitem| newitem.title=feed_item.title.gsub(/<[^>]*>/, '''') newitem.guid=feed_item.guid if feed_item.publisher.name newitem.source=feed_item.publisher.name end newitem.url=feed_item.link newitem.content=feed_item.description newitem.timestamp=feed_item.published newitem.save end else puts "processing item ''#{feed_item.title}'' - old" end end end #end all now, if I comment out the def and end for the method "all", then the script runs beautifully. However, I''d like to at least break the script down into methods, but run into a problem because that class has to be defined at that time so far as I know. thanks, Thufir
Why don''t you put the class definition before "def all"? --Valentin On Sep 22, 6:30 pm, Thufir <hawat.thu...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I''m trying to break this script into methods, but run into an error: > > thufir@ARRAKIS:~/projects/aggregator$ ruby rss2mysql.rb > rss2mysql.rb:19: class definition in method body > thufir@ARRAKIS:~/projects/aggregator$ > > The script is from: > > Practical Ruby Gemshttp://www.apress.com/book/view/9781590598115 > Chapter 5 > > rss2mysql.rb follows: > > require ''rubygems'' > require ''active_record'' > require ''feed_tools'' > require ''yaml'' > > def all > > db = YAML.load_file("database.yml") > ActiveRecord::Base.establish_connection( > :adapter => db["adapter"], > :host => db["host"], > :username => db["username"], > :password => db["password"], > :database => db["database"]) > > class Items < ActiveRecord::Base #runtime error > end > > # If the table doesn''t exist, we''ll create it. > unless Items.table_exists? > ActiveRecord::Schema.define do > create_table :items do |t| > t.column :title, :string > t.column :content, :string > t.column :source, :string > t.column :url, :string > t.column :timestamp, :timestamp > t.column :keyword_id, :integer > t.column :guid, :string > t.column :html, :string > end > end > end > > feed_url = ''http://www.slashdot.org/index.rss'' > > feed=FeedTools::Feed.open(feed_url) > feed.items.each do |feed_item| > unless (Items.find_by_title(feed_item.title) \ > or Items.find_by_url(feed_item.link) \ > or Items.find_by_guid(feed_item.guid)) > puts "processing item ''#{feed_item.title}'' - new" > > Items.new do |newitem| > newitem.title=feed_item.title.gsub(/<[^>]*>/, '''') > newitem.guid=feed_item.guid > if feed_item.publisher.name > newitem.source=feed_item.publisher.name > end > newitem.url=feed_item.link > newitem.content=feed_item.description > newitem.timestamp=feed_item.published > newitem.save > end > else > puts "processing item ''#{feed_item.title}'' - old" > end > end > > end #end all > > now, if I comment out the def and end for the method "all", then the > script runs beautifully. However, I''d like to at least break the script > down into methods, but run into a problem because that class has to be > defined at that time so far as I know. > > thanks, > > Thufir
Thufir wrote:> I''m trying to break this script into methods, but run into an error:[...] Please refrain from posting the same thing several times. I answered this the first time you asked. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/.