2011-02-12 73 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

相關問題