If I commend out the def and end lines for the "all" method, the
script runs
fine. However, the goal is to decompose the script into several methods, which
fails with:
thufir@ARRAKIS:~/projects/aggregator$
thufir@ARRAKIS:~/projects/aggregator$ ruby rss2mysql.rb
rss2mysql.rb:19: class definition in method body
thufir@ARRAKIS:~/projects/aggregator$
The script is adapted from:
Practical Ruby Gems
http://www.apress.com/book/view/9781590598115
Chapter 5
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
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
thanks,
Thufir
If I commend out the def and end lines for the "all" method, the
script runs fine. However, the goal is to decompose the script into
several methods, which fails with:
thufir@ARRAKIS:~/projects/aggregator$
thufir@ARRAKIS:~/projects/aggregator$ ruby rss2mysql.rb
rss2mysql.rb:19: class definition in method body
thufir@ARRAKIS:~/projects/aggregator$
The script is adapted from:
Practical Ruby Gems
http://www.apress.com/book/view/9781590598115
Chapter 5
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
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
thanks,
Thufir
On Sep 22, 4:46 pm, Thufir <hawat.thu...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> If I commend out the def and end lines for the "all" method, the > script runs fine. However, the goal is to decompose the script into > several methods, which fails with: > > thufir@ARRAKIS:~/projects/aggregator$ > thufir@ARRAKIS:~/projects/aggregator$ ruby rss2mysql.rb > rss2mysql.rb:19: class definition in method body >It''s telling you what the error is - you cannot define a class (Items) inside a method (at least not with the usual syntax) Fred
Thufir wrote:> If I commend out the def and end lines for the "all" method, the script > runs > fine. However, the goal is to decompose the script into several > methods, which > fails with: > > thufir@ARRAKIS:~/projects/aggregator$ > thufir@ARRAKIS:~/projects/aggregator$ ruby rss2mysql.rb > rss2mysql.rb:19: class definition in method bodyThe error message is accurate. You seem to be missing an "end". Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/.