У меня есть экземпляр класса одноплодной SingletonClass
в модуле Modulename
Singleton в рельсах неизменных
Modulename::SingletonClass.instance
который имеет хэш @hashname
. У меня есть метод на SingletonClass
, который добавляет новые ключи к @hashname
.
Когда я добавляю новый ключ к @hashname
, я могу видеть новый ключ существует, делая puts @hashname
в контроллере, но когда я делаю это в SingletonClass
, кажется, что новый ключ не добавляется. Почему это? Почему я могу видеть изменения в контроллере @hashname
, но не из класса singleton?
Вот код, который воспроизводит поведение я пытаюсь описать:
module MyModule
module SubModule
class SingletonClass
include Singleton
def initialize
@items = {}
@items = MyMode.all.map{|c| {c.name => c.secondary_name}}.reduce(:merge)
end
def add_new_item(name, secondary_name)
@items[name] = secondary_name
end
def do_something
@items.each do |k,v|
ap "#{k} => #{v}"
end
end
def another_method
do_something
end
end
end
end
Когда я делаю это из моего контроллера:
singleton = MyModule::SubModule::SingletonClass.instance
singleton.add_new_item('test', 'test1')
Тогда это также от контроллера:
singleton.do_something
Новый товар распечатан, поэтому его хорошо.
Но когда я призываю another_method
из My внутри моего одноплодного класса, новый элемент появляется не будет добавлен
мы должны видеть код для класса. можете ли вы создать небольшой класс, демонстрирующий это поведение? –
@Jesse Wolgamott, пожалуйста, см. Мое обновление благодаря –
Является ли ваше do_something вызовом из отдельного действия контроллера? –