Как это:
class TYourClass
class << self
attr_accessor :class_instance_variable
end
end
Это можно рассматривать как открытие метакласса класса (экземпляром которого является сам класс) и добавление к нему атрибута.
attr_accessor
- это метод класса Class
, он добавляет к классу два метода: один для чтения переменной экземпляра и другой для его установки. Вот возможная реализация:
class Class
def my_attr_accessor(name)
define_method name do
instance_variable_get "@#{name}"
end
define_method "#{name}=" do |new_val|
instance_variable_set "@#{name}", new_val
end
end
end
Полностью непроверенный метод доступа к атрибутам класса:
class Class
def class_attr_accessor(name)
define_method name do
class_variable_get "@@#{name}"
end
define_method "#{name}=" do |new_val|
class_variable_set "@@#{name}", new_val
end
end
end