递归地包括所有模型子目录

时间:2011-10-13 07:27:57

标签: ruby-on-rails model autoload directory-structure

如何在模型和lib目录中递归加载所有目录?在application.rb中,我有以下几行:

config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**}')]
config.autoload_paths += Dir[Rails.root.join('lib', '{**}')]

但它们似乎只添加了一个级别的模型和lib子目录。

由于

1 个答案:

答案 0 :(得分:36)

这应该是有帮助的

 Dir["#{config.root}/app/models/**/","#{config.root}/lib/**/"]

享受! (:

更新

很好的问题,上面发布的例子我简单地提到了我最近的项目。

经过一些测试后,我会得到更好的理解,这很棒。

主要的区别当然是在File not config.root / Rails.root

的连接方法中

'**'之后的尾随'/'是有意义的。

第一个用于在globbing时匹配目录。  第二个会谈是递归

在你的情况下,这个也可能是合适的

Dir[ Rails.root.join('app', 'models', '**/') ]