Hi --

On Sat, 6 Sep 2008, Jason Lillywhite wrote:

> It seems odd that cattr_* (i.e. cattr_accessor, cattr_reader,
> cattr_writer) is not in the native Ruby and that you have to require
> active support and rubygems to get this to work. Including the rails
> stuff appears to slow things down a little. Why is this not built in the
> native Ruby source?

I can't answer that directly, but I can tell you why I'm glad it
isn't. It's partly that class variables are a bit oddball to start
with, and I'm not eager to see them used a lot more. But it's also the
terminology.

An "attribute" is, or should be, an attribute of an object. But class
variables are not object-specific; they're very promiscuous, visible
to a class, its instances, and all the subclasses and all their
instances.

Therefore, a class variable is not an appropriate choice for
representing an "attribute". The fit between instance variables, as a
language-level construct, and "attribute", as a concept, is very good;
but class variables are very different from instance variables, and
the "attr" terminology is very loose. (The methods may have uses, but
the names are problematic.)


David

-- 
Rails training from David A. Black and Ruby Power and Light:
   Intro to Ruby on Rails  January 12-15   Fort Lauderdale, FL
   Advancing with Rails    January 19-22   Fort Lauderdale, FL *
   * Co-taught with Patrick Ewing!
See http://www.rubypal.com for details and updates!