Metaprogramming surprise?

Artur Merke wrote:

class A
   @@class_variable
   @class_instance_variable
   def initialize
       @instance_variable
   end
end

I hope this is the correct naming for this variables

That's the way I think of them, too. It might help you to remember that
instance variables are just instance variables, regardless of where they
are stored. "Class instance variables" are just normal instance
variables that happen to be stored on a Class object. Nothing special
about them.

To achieve what you were trying you may want to look at the class
extensions in rails where there are simple class level accessors and
inheritable_class accessors that give each inherited class it's own
copy of the accessors from the parent class.

http://dev.rubyonrails.org/svn/rails/branches/stable/activesupport/lib/active_support/core_ext/class/

attributes.rb is 42 lines of code and does all of that too, plus up front or
deferred initialisation.

   harp:~ > cat a.rb
   require 'rubygems'
   require 'attributes'

   class A
     class << self
       attribute 'a' => 42
       attribute('classname'){ self.name }
     end
   end

   class B < A
   end

   p A.a
   p B.a

   p A.classname
   p B.classname

   harp:~ > ruby a.rb
   42
   "A"
   "B"

-a

···

On Wed, 18 Oct 2006, J2M wrote:

To achieve what you were trying you may want to look at the class
extensions in rails where there are simple class level accessors and
inheritable_class accessors that give each inherited class it's own
copy of the accessors from the parent class.

http://dev.rubyonrails.org/svn/rails/branches/stable/activesupport/lib/active_support/core_ext/class/

--
my religion is very simple. my religion is kindness. -- the dalai lama