所以我在Sinatra辅助模块中有一个函数Data
,它在reload_config
下面定义。
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
的内容,但在我的帮助模块中却没有。{/ p>
redis.rb
包含redis.rb
的分配(应该可以从任何范围级别访问吗?)
另一个令人不安的事实:如果我改变了我给configatron.redis
的路径,它会引发异常。
另外,如果我在require_all
内写puts "Haaaaa!"
,则会在redis.rb
加载时执行,但从config.ru
加载时不执行。
这可能是什么原因?如果它与词法作用域有关,那为什么不能实际执行诸如helpers.rb
或puts
之类的语句?
请注意,configatron.foo = 'hello'
和require_all
已加载到configatron
。
答案 0 :(得分:0)
解决方案仅限于用户load_all
而非require_all
。
代码不会因为某些词法范围问题而加载,但因为require_all
不加载两次相同的文件。因此,使用load_all
解决了问题。