Итак, у меня есть функция reload_config
внутри вспомогательного модуля Sinatra, которая определена ниже в helpers.rb
.
module Web
module Helpers
def reload_config
require_all 'config/*.rb'
end
end
end
Затем она загружается в Web::Base
рекомендуемым способом, используя helpers Web::Helpers
.
Внутри config
есть файл с именем redis.rb
, который затем загружается reload_config
.По крайней мере, так и должно быть.Вызов require_all
внутри моего config.ru
(верхнего уровня) эффективно загружает содержимое redis.rb
, но внутри моего вспомогательного модуля - нет.
redis.rb
содержит назначения для configatron.redis
(что должнобыть доступным с любого уровня контекста, верно?)
Еще один тревожный факт: если я изменю путь, который я задаю для require_all
, это вызовет исключение.
Также, если я напишу, например,puts "Haaaaa!"
внутри redis.rb
, он выполняется при загрузке с config.ru
, но не при загрузке с helpers.rb
.
Что может быть причиной этого?Если это связано с лексическим ограничением, то почему на самом деле невозможно выполнить такие операторы, как puts
или configatron.foo = 'hello'
?
Обратите внимание, что require_all
и configatron
загружаются в config.ru
.