I'm having a little trouble with understanding how to work out the
schematic for some of my classes using ActiveRecord when a file is in my
lib directory:

Brief example:

Here's the outline of the files in use:

....app
........controllers
............application_controller.rb
............rushing_offenses_controller.rb
........models
............rushing_offense.rb
....lib
........scraper.rb
........tasks
............scraper.rake

The rushing_offense.rb file contains:

class RushingOffense < ActiveRecord::Base
end

The scraper.rb file contains:

class Scraper < ActiveRecord::Base
# METHOD that define which URL to parse
# METHOD that parses the data into an instanced variable called @rows
# METHOD that should be updating my database table called
"rushing_offenses"
# Update Rushing Offense
  def update_rushing_offense
    for i in 0...@numrows-1
      update_all(:name => @rows[i][0], :games => @rows[i][1])
      puts "Updating Team Name = #...@rows[i][0]}."
    end
  end
end

The scraper.rake file contains:

desc "This task will parse data from ncaa.org and upload the data to our
db"
task :scraper => :environment do
  offensive_rushing =
Scraper.new('http://web1.ncaa.org/mfb/natlRank.jsp?year=2008&rpt=IA_teamrush&site=org',
    'table', 'statstable', '//tr')
  offensive_rushing.scrape_data
  offensive_rushing.clean_celldata
  offensive_rushing.print_values
  offensive_rushing.update_rushing_offense # the call to the method
above
end

Now if I run the rake file what is going to happen is I'm going to get
an error stating:

Table 'project_development.scrapers' doesn't exist:

I believe I understand why that's happening but I'm not sure how to fix
it from a long term perspective.  Here's why...

The class Scraper is pushed into the ActiveRecord::Base so it believes
the class is the pluralized name of the table Scrapers.  I then thought
well maybe I need to put the code in the rushing_offenses_controller.rb
file in that class but here's the issue I'm having:

The Scraper class should be a class that I can call with other classes
to do repetitive tasks on many different URLs.  I've setup the class to
do that with the methods being able to retrieve different URLs.

So, I want my Scraper class to just act like a utility class to be used
by other classes to parse data, and upload it to the correct database
table.  If I place the scraper class inside the
rushing_offenses_controller file then I'm not following DRY principles.
I don't want to have to repeat code over and over.

Any ideas on how I can rectify this issue I'm having?
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to