I'm using modules as namespaces in ruby. How would I go about autoloading...something like autoload :"App::ModuleA", 'app/module_a
that doesn't throw a "mus开发者_Go百科t be constant name" error?
You need to pass a symbol to autoload
(probably a typo in your question), and call it on the parent of the constant, like:
App.autoload :ModuleA, "app/module_a"
Note that this works for nested levels too. Say that in app/module_a
you have:
module App::ModuleA
autoload :Inner, "path/to/inner"
end
When Ruby encounters App::ModuleA::Inner
, it will first attempt to access ModuleA
, succeed by autoloading it, and only then attempt Inner
, which succeeds also because it now knows where to autoload it.
精彩评论