> Everything works as expected, save fetch_one().  Why does it not return 
> "James"?

The problem is that the class variables are defined for Module, and not 
for the class Accessor:


class Module
   def cattr_accessor( *symbols )
     symbols.each do |sym|
       eval "def self.#{sym}() @@#{sym} end
             def self.#{sym}=(value) @@#{sym} = value end"
     end
   end
end

class A
   cattr_accessor :one
end

class B
   cattr_accessor :one
end


A.one = 1;  p A.one # prints 1
B.one = 42; p A.one # prints 42!



martinus