From 89ec72c2818a592323fe4ec3277638d379f1ac2a Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 21 Jul 2008 13:42:34 -0500 Subject: Added configurable eager load paths. Defaults to app/models, app/controllers, and app/helpers --- railties/lib/initializer.rb | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'railties/lib/initializer.rb') diff --git a/railties/lib/initializer.rb b/railties/lib/initializer.rb index 3be95de8d3..828d688475 100644 --- a/railties/lib/initializer.rb +++ b/railties/lib/initializer.rb @@ -333,11 +333,14 @@ Run `rake gems:install` to install the missing gems. end end + # Eager load application classes def load_application_classes - require_dependency 'application' - - Dir.glob('app/{models,controllers,helpers}/*.rb').each do |file| - require_dependency file + if configuration.cache_classes + configuration.eager_load_paths.each do |load_path| + Dir.glob("#{load_path}/*.rb").each do |file| + require_dependency file + end + end end end @@ -578,6 +581,11 @@ Run `rake gems:install` to install the missing gems. # All elements of this array must also be in +load_paths+. attr_accessor :load_once_paths + # An array of paths from which Rails will eager load on boot if cache + # classes is enabled. All elements of this array must also be in + # +load_paths+. + attr_accessor :eager_load_paths + # The log level to use for the default Rails logger. In production mode, # this defaults to :info. In development mode, it defaults to # :debug. @@ -686,6 +694,7 @@ Run `rake gems:install` to install the missing gems. self.frameworks = default_frameworks self.load_paths = default_load_paths self.load_once_paths = default_load_once_paths + self.eager_load_paths = default_eager_load_paths self.log_path = default_log_path self.log_level = default_log_level self.view_path = default_view_path @@ -826,6 +835,14 @@ Run `rake gems:install` to install the missing gems. [] end + def default_eager_load_paths + %w( + app/models + app/controllers + app/helpers + ).map { |dir| "#{root_path}/#{dir}" }.select { |dir| File.directory?(dir) } + end + def default_log_path File.join(root_path, 'log', "#{environment}.log") end -- cgit v1.2.3