在我的config / initializers / refinery文件夹中,有一些配置文件结构为
initializers
├── backtrace_silencers.rb
├── inflections.rb
├── mime_types.rb
├── refinery
│ ├── authentication.rb
│ ├── core.rb
│ ├── i18n.rb
│ ├── images.rb
│ ├── page_images.rb
│ ├── pages.rb
│ └── resources.rb
├── secret_token.rb
├── session_store.rb
└── wrap_parameters.rb
refinery/
与rails console --sandbox
一起,
Refinery.included_modules
#=> []
为什么呢?当我在Refinery::P
之后按 Tab 时,它会显示以下模块。
Refinery::Page Refinery::PagePart Refinery::PaginationHelper
Refinery::PageImages Refinery::Pages Refinery::Plugin
Refinery::PageImagesGenerator Refinery::PagesGenerator Refinery::Plugins
如果它有::
,它必须在某个地方并且必须包含它。那么为什么include_modules
有效?如果我错了请纠正我,并告诉我正确的方法来显示模块内的模块或类。我提到http://www.ruby-doc.org/core-1.9.3/Module.html。
答案 0 :(得分:0)
Refinery
中没有“包含”这些模块,这就是included_modules
中没有列出这些模块的原因。
“包含”在Ruby中具有特定含义 - 基本上,当一个类或模块“混入”另一个模块时 - 而Refinery::Page
之类的东西是命名空间。查看Pragmatic Programmer's Guide,这很好地解释了它。
尝试使用Refinery.constants
来获取您的目标。