(Probably Easy) ActiveRecord help needed!

[Using XP, MySQL 5.0, Ruby 1.8.4]

Hello, this is my first post.

I am new to Ruby, coming from about 6 years of 'import java.util.*'s. I
am using ActiveRecord, both on Rails and outside Rails.

On Rails I have no trouble. Outside is where it gets confusing.

I have created three tables (so far) and their three corresponding
classes. Since I’m having the same trouble on all classes, I’ll just
use one as an example. This example doesn’t have an auto-incrementing
id column (I won’t add any new records), but the problem is just the
same as those in tables without auto-incrementing id.

On MySQL, the nodes table is defined as such:

CREATE TABLE nodes (
id int(5) NOT NULL COMMENT ‘This column correspond to the node id’,
node_name varchar(64) NOT NULL default ‘N/A’ COMMENT ‘This column
holds the node name’,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

And it’s class is:

require ‘rubygems’
require ‘active_record’

class Node < ActiveRecord::Base
def to_s
“#{id}) #{node_name}”
end
end

###########

I insert 17 records here.

Well. After establishing a connection I do the following:

# # # # #

all_nodes = Node.find(:all)
all_nodes.each do |n|
puts “#{n}” # this is the “problem line”
end

# # # # #

But when i run it I get this:
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/connection_adapters/mysql_adapter.rb:292:in
columns': undefined methodeach’ for #Mysql:0x2cf2270
(NoMethodError)
from
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/base.rb:696:in
columns' from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/base.rb:704:incolumns_hash’
from
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/base.rb:1562:in
column_for_attribute' from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/base.rb:1362:inid’
[the stack continues downward to my own *.rb file]

Even if I change the “problem line” to something like
puts “#{n.id} with name #{n.node_name}” # problem line 2

I get the same error! Thing is, if I substitute “problem line 2” with
say just an output message, it gets displayed 17 times, one per
record… so I KNOW the data is being loaded.

One [extremely ugly and wrongheaded IMHO] approach has been adding
accessing methods to the Node class:
def id
@attributes[‘id’]
end

def node_name
@attributes[‘node_name’]
end

And it works but for setters I have no luck and besides, this isn’t the
way it’s supposed to be.

Now, I’ve looked around and all examples work perfectly by calling out
the column name on the object (i.e. as I did on “problem line 2”) but
here I get this error! And I know this might be a case of a simple
omission or a RTFM thing but so far I haven’t had much luck. Any
suggestions?

Nevermind! My bad.

For the solution I had to do a couple of gem updates/installs and
actually UNINSTALL a
mysql gem. After that, everything is working great.

// upgraded to 1.1.6 along with all dependencies
gem install rails --include-dependencies

// uninstalled unused
gem cleanup

// gem uninstall mysql gem
gem uninstall mysql