2011-02-12 66 views
5

我有一个名为user_searches的模块。它执行一些不是用户模型核心的搜索,因此,为什么我要把责任放在其他地方。我想组织我所有的模型,在一个名为user的lib子文件夹中执行非核心用户功能。眼下,包括该模块在用户模式,我不得不把方法...lib中的子文件夹

require 'user/user_searches' 

class User < ActiveRecord::Base 

    include UserSearches 

end 

...我不需要,如果该文件是直接在lib文件夹的需要,但怎么做,如果它在子文件夹。我有什么要做,所以我不需要要求

回答

3

您可以通过这种方式将必要的需求行放入lib/user.rb,所有需求都会在应用程序启动时递归加载。

或者,你可以把这样的事情变成一个初始化:

# put into config/initializers/load_lib.rb 
Dir["#{RAILS_ROOT}/lib/**/*.rb"].each { |f| require(f) } 

这将需要在你的lib文件夹中的所有Ruby文件。你只需要确保,如果这是你想要的真的是:)

0

这是在初始化为刚刚加载路径的方法default_load_paths在文件中轨-2.2.2引起

/lib目录/ initializer.rb作品lib文件夹中没有子目录,要解决这个问题,你可以编辑你的项目`environment.rb config文件并把config.load_path数组推入到所有的子目录中。

+1

对于Rails 2.x,根据environment.rb中的文档,添加以下内容:`config.autoload_paths + =%W(#{RAILS_ROOT}/lib/extra)` – ghayes 2011-11-23 03:12:19