Вы можете добавить инициализатор, который содержит оболочку Singleton для вашего объекта:
config / initializers / foo_factory.rb:
require 'foo'
class FooFactory
class << self
def foo
@@foo ||= Foo.new(lots, of, params)
end
end
end
Из любого другого места, где вытеперь можно использовать:
FooFactory.foo.do_something
Обратите внимание, что это крайне ужасно , и вам, вероятно, не следует этого делать.Тем не менее, он будет делать то, что вы хотите: установить глобальный синглтон, который будет настроен только при запуске сервера.
Еще более короткое решение подобной ужасности - просто назначить свой единственный экземпляр Foo постоянной:
config / initializers / foo_singleton.rb:
require 'foo'
FooSingleton = Foo.new(lots, of, params)
В другом месте вы можете использовать:
FooSingleton.do_something
Обратите внимание, что это в основном лишь немного лучше, чемглобальная переменная, в которой вы не можете (легко) изменить значение FooSingleton.