0

在我的 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
  #=> [] 

为什么?当我按下TabafterRefinery::P时,它会显示以下模块。

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

4

1 回答 1

0

这些模块没有“包含”在 中Refinery,这就是为什么它们没有在included_modules.

“包含”在 Ruby 中具有特定的含义——基本上,它是当一个类或模块“混合”另一个模块时——而类似于Refinery::Page命名空间的东西。查看Pragmatic Programmer's Guide,它解释得很好。

尝试Refinery.constants得到你所追求的。

于 2012-11-21T14:38:09.070 回答