> 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