lib中的子文件夹

时间:2011-02-12 23:18:57

标签: ruby-on-rails require subdirectory

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

require 'user/user_searches'

class User < ActiveRecord::Base

  include UserSearches

end

...如果文件直接在lib文件夹中,我不需要require,但如果它在子文件夹中,则不需要。我该怎么办?我不需要要求

2 个答案:

答案 0 :(得分:3)

您可以将必要的需求行放入lib/user.rb,这样就可以在应用程序启动时递归加载所有需求。

或者,你可以把这样的东西放到初始化器中:

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

它将需要lib文件夹中的所有ruby文件。你只需要确定这是否真的是你想要的:))

答案 1 :(得分:0)

这是导致

的作品

在文件rails-2.2.2 / lib / initializer.rb中,方法default_load_paths初始化为加载路径只是没有子目录的lib文件夹,为了解决这个问题,你可以编辑你的项目`environment.rb配置文件并推入config.load_path array all subdirs。