when and how to use ActiveRecord::Migration

Interestingly, the text book

Practical Ruby Gems http://www.apress.com/book/view/9781590598115 listing 5-1

uses ActiveRecord::Base wheras ActiveRecord::Migration would give more flexibility, right?

How would I implement this change, pls?

thufir@ARRAKIS:~/projects/aggregator$ thufir@ARRAKIS:~/projects/aggregator$ cat rss2mysql.rb require 'rubygems' require 'active_record' require 'feed_tools' require 'yaml' require 'items'

def all

feed_url = 'Slashdot

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

Items.connect all thufir@ARRAKIS:~/projects/aggregator$ thufir@ARRAKIS:~/projects/aggregator$ cat items.rb

class Items < ActiveRecord::Base

def Items.connect

      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"])

# 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

end #connect

end thufir@ARRAKIS:~/projects/aggregator$ thufir@ARRAKIS:~/projects/aggregator$ cat items2.rb class Items2 < ActiveRecord::Migration     def self.up         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         def self.down                 drop_table :items         end end thufir@ARRAKIS:~/projects/aggregator$ thufir@ARRAKIS:~/projects/aggregator$

thanks,

Thufir

Interestingly, the text book

Practical Ruby Gemshttp://www.apress.com/book/view/9781590598115 listing 5-1

uses ActiveRecord::Base wheras ActiveRecord::Migration would give more flexibility, right?

I imagine they are just showing you that there is more than one way to do things.

How would I implement this change, pls?

Which change ?

Fred

What I mean is, if it's

class Items < ActiveRecord::Migration

then there cannot be a query as below:

claims = Items.find( :all)

Or, I suppose you don't query in that fashion, as the migration file will basically just have self.up and down (for me). How is the migration in AR linked to the Base class, which is queriable, in a non- rails scenario?

I suppose the driver will invoke the migration, but how is the migration tied to the model (the Item class, versus Items the migration)?

thanks,

Thufir

> Which change ?

What I mean is, if it's

class Items < ActiveRecord::Migration

then there cannot be a query as below:

claims = Items.find( :all)

Correct.

Or, I suppose you don't query in that fashion, as the migration file will basically just have self.up and down (for me). How is the migration in AR linked to the Base class, which is queriable, in a non- rails scenario?

I don't think it is.

I suppose the driver will invoke the migration, but how is the migration tied to the model (the Item class, versus Items the migration)?

There is no correspondence between models and migrations. For a given model there will frequently be a migration that creates the appropriate table but you don't have to go that way.

Fred