diff options
author | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-26 17:32:05 -0700 |
---|---|---|
committer | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-26 17:32:05 -0700 |
commit | 188a892c5a097ee6d62249d048a6be7d2dfe9649 (patch) | |
tree | 6ef8769019e1f294156dd58551ec6656a37d4385 /railties/lib/rails | |
parent | 4153c6b720563e1c43bb96e95f0ff5fbd59d6be7 (diff) | |
download | rails-188a892c5a097ee6d62249d048a6be7d2dfe9649.tar.gz rails-188a892c5a097ee6d62249d048a6be7d2dfe9649.tar.bz2 rails-188a892c5a097ee6d62249d048a6be7d2dfe9649.zip |
Starting to replace scattered path configuration settings with the path object
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/configuration.rb | 33 | ||||
-rw-r--r-- | railties/lib/rails/paths.rb | 43 |
2 files changed, 70 insertions, 6 deletions
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index fdb071fc18..59132efe98 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -10,7 +10,7 @@ module Rails :log_path, :log_level, :logger, :preload_frameworks, :database_configuration_file, :cache_store, :time_zone, :view_path, :metals, :controller_paths, :routes_configuration_file, - :eager_load_paths, :dependency_loading + :eager_load_paths, :dependency_loading, :paths def initialize set_root_path! @@ -61,7 +61,36 @@ module Rails Pathname.new(RAILS_ROOT).realpath.to_s end - RAILS_ROOT.replace self.root_path + @paths = Rails::Application::Root.new(root_path) + @paths.app = "app" + @paths.app.metals = "app/metal" + @paths.app.models = "app/models" + @paths.app.controllers = "app/controllers" + @paths.app.helpers = "app/helpers" + @paths.app.services = "app/services" + @paths.lib = "lib" + @paths.vendor = "vendor" + @paths.vendor.plugins = "vendor/plugins" + @paths.cache = "tmp/cache" + @paths.config = "config" + @paths.config.locales = "config/locales" + @paths.config.environments = "config/environments" + + @paths.app.controllers.push *builtin_directories + + @paths.app.load_path! + @paths.app.metals.load_path! + @paths.app.models.eager_load! + @paths.app.controllers.eager_load! + @paths.app.helpers.eager_load! + @paths.app.services.load_path! + @paths.app.metals.eager_load! + @paths.lib.load_path! + @paths.vendor.load_path! + + @paths.config.environments.glob = "#{RAILS_ENV}.rb" + + RAILS_ROOT.replace root_path end # Enable threaded mode. Allows concurrent requests to controller actions and diff --git a/railties/lib/rails/paths.rb b/railties/lib/rails/paths.rb index 0b43725e32..aada7d4a56 100644 --- a/railties/lib/rails/paths.rb +++ b/railties/lib/rails/paths.rb @@ -19,7 +19,7 @@ module Rails class Root include PathParent - attr_reader :path, :load_once, :eager_load + attr_reader :path def initialize(path) raise unless path.is_a?(String) @@ -28,7 +28,32 @@ module Rails # TODO: Move logic from set_root_path initializer @path = File.expand_path(path) @root = self - @load_once, @eager_load = Set.new, Set.new + @load_once, @eager_load, @all_paths = [], [], [] + end + + def load_once + @load_once.uniq! + @load_once + end + + def eager_load + @eager_load.uniq! + @eager_load + end + + def all_paths + @all_paths.uniq! + @all_paths + end + + def load_paths + all_paths.map { |path| path.paths }.flatten + end + + def add_to_load_path + load_paths.reverse_each do |path| + $LOAD_PATH.unshift(path) if File.directory?(path) + end end end @@ -57,7 +82,7 @@ module Rails def load_once! @load_once = true - @root.load_once << self + @root.load_once.push *self.paths end def load_once? @@ -66,13 +91,23 @@ module Rails def eager_load! @eager_load = true - @root.eager_load << self + @root.all_paths << self + @root.eager_load.push *self.paths end def eager_load? @eager_load end + def load_path! + @load_path = true + @root.all_paths << self + end + + def load_path? + @load_path + end + def paths @paths.map do |path| path.index('/') == 0 ? path : File.join(@root.path, path) |