Ruby has Class, Class Object, and Instance.
A Class variable belongs to a Class.
A Class instance variable belongs to a Class Object
Class variable:
Accessible within the class and its instances.
attr_accessor does not work on class variables.
Class instance variable:
Accessible only through the Class.
attr_accessor works if you define it in the class and not in the class object as below.
class A @b = 1 class << self attr_accessor :b end end
Defining a getter and setter on the instances for the class instance variable b in:
class A @b = 1 class << self attr_accessor :b end def b A.b end def b=(value) A.b=value end end
Now the class instance variable b can be accessed via the owner Class and its instances.
As a several days old ruby learner, this is the most I can do.
`irb(main):021:0* class A irb(main):022:1> @b = 1 irb(main):023:1> class << self irb(main):024:2> attr_accessor :b irb(main):025:2> end irb(main):026:1> def b irb(main):027:2> A.b irb(main):028:2> end irb(main):029:1> def b=(v) irb(main):030:2> A.b=v irb(main):031:2> end irb(main):032:1> end => :b= irb(main):033:0> A.b => 1 irb(main):034:0> c = A.new => #<A:0x00000003054440> irb(main):035:0> c.b => 1 irb(main):036:0> c.b= 50 => 50 irb(main):037:0> A.b => 50 irb(main):038:0>`
Yes, I'm begining to dislike ruby...iso a better solution.