Вам не нужно фактически инициализировать ваши синглтоны в любом конфигурационном файле.Вместо этого вы можете просто реализовать метод класса в вашем классе, который будет возвращать синглтон.Следующий код позволит вам получить доступ к одиночному файлу с помощью DataCollectionStore.instance
class DataCollectionStore
@@instance = DataCollectionStore.new
def self.instance
@@instance
end
def initialize
#intitialize you instance here
end
end
Имейте в виду, что для config.cache_classes вам нужно будет установить значение true в development.rb, чтобы это работало в вашей среде разработки.Классы по умолчанию кэшируются в производстве.
В качестве альтернативы, вы можете просто использовать сам класс в качестве одноэлементного объекта и реализовать свою функциональность в методах класса.
Если ваша инициализация дорогая, вы можете сделать это лениво, используя приведенный ниже фрагмент кода.Таким образом, вы платите цену только в том случае, если ваш тест на самом деле вызывает метод класса экземпляра.Вы можете проверить это в своем приложении, выдав DataCollectionStore.instance
в виде и используя различные браузеры для загрузки страницы.Если все работает правильно, вы должны увидеть одинаковую метку времени в обоих браузерах.
class DataCollectionStore
@@instance = nil
def self.instance
@@instance || @@instance = self.new
end
def initialize
@initialized_time = Time.now
end
def to_s
@initialized_time
end
end