Я использую Ruby 2.6.5 и пытаюсь использовать def_delegator
для делегирования переменной класса.
class A
extend Forwardable
@@classB = B.new
def_delegator :@@classB, :method_name, :a_method_name
end
Это то, что когда я пытаюсь сделать A.new.a_method_name
, я получаю NameError (uninitialized class variable @@classB in Object)
. Не уверен, что я делаю вызов def_delegator
неправильно или мне просто нужно сломать и использовать ActiveSupport delegate
.
ОБНОВЛЕНИЕ
На основании приемлемыхОтвет моего определения класса выглядит так:
class A
extend Forwardable
class << self
attr_accessor :classB
end
self.classB = B.new
def_delegator 'self.class.classB', :method_name, :a_method_name
end