Определение attr_accessor для переменных экземпляра класса - Ruby

Я пытаюсь создать метод доступа к переменной экземпляра класса. Я звоню attr_accessor метод из модуля, который входит в класс. Смотрите код ниже:

module Persistence
  def self.included(mod)
      mod.extend ClassMethods
      # Add accessor for class instance variable
      class << mod
          attr_accessor :persistent_data
      end
  end

  module ClassMethods
      def X
          persistent_data = 'data'
      end
  end
end

Приведенный выше код работает. Однако, когда я изменяю код, который вызывает attr_accessor, к этому:

 mod.instance_eval do
     attr_accessor :persistent_data
 end

я получил NoMethodError: undefined method `persistent_data='

Не должны ли оба способа работать одинаково или мое понимание здесь неверно? Я использую REE 1.8.7

0 ответов

Другие вопросы по тегам