aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-04-05 12:30:59 +0200
committerJosé Valim <jose.valim@gmail.com>2010-04-05 12:30:59 +0200
commitc140aca361506a3a759fbe03fad8adc748c807bb (patch)
tree52635e96c4602e647b8423007767e41538cddf4d /railties
parent6690d662920f0db854f7303cd2a5a36c72299199 (diff)
downloadrails-c140aca361506a3a759fbe03fad8adc748c807bb.tar.gz
rails-c140aca361506a3a759fbe03fad8adc748c807bb.tar.bz2
rails-c140aca361506a3a759fbe03fad8adc748c807bb.zip
Remove app/views from the load paths [#4226 state:resolved]
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/engine/configuration.rb2
-rw-r--r--railties/lib/rails/paths.rb22
-rw-r--r--railties/test/application/paths_test.rb1
3 files changed, 19 insertions, 6 deletions
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
index 2129e10af8..28e7ef947d 100644
--- a/railties/lib/rails/engine/configuration.rb
+++ b/railties/lib/rails/engine/configuration.rb
@@ -20,7 +20,7 @@ module Rails
paths.app.models "app/models", :eager_load => true
paths.app.mailers "app/mailers", :eager_load => true
paths.app.metals "app/metal", :eager_load => true
- paths.app.views "app/views", :eager_load => true
+ paths.app.views "app/views"
paths.lib "lib", :load_path => true
paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
paths.config "config"
diff --git a/railties/lib/rails/paths.rb b/railties/lib/rails/paths.rb
index 55874813da..1c9e308631 100644
--- a/railties/lib/rails/paths.rb
+++ b/railties/lib/rails/paths.rb
@@ -3,6 +3,8 @@ require 'set'
module Rails
module Paths
module PathParent
+ attr_reader :children
+
def method_missing(id, *args)
name = id.to_s
@@ -37,15 +39,15 @@ module Rails
end
def load_once
- filter { |path| path.paths if path.load_once? }
+ filter_by(:load_once?)
end
def eager_load
- filter { |path| path.paths if path.eager_load? }
+ filter_by(:eager_load?)
end
def load_paths
- filter { |path| path.paths if path.load_path? }
+ filter_by(:load_path?)
end
def push(*)
@@ -58,8 +60,16 @@ module Rails
protected
- def filter(&block)
- all_paths.map(&block).compact.flatten.uniq.select { |p| File.exists?(p) }
+ def filter_by(constraint)
+ all_paths.map do |path|
+ if path.send(constraint)
+ paths = path.paths
+ paths -= path.children.values.map { |p| p.send(constraint) ? [] : p.paths }.flatten
+ paths
+ else
+ []
+ end
+ end.flatten.uniq.select { |p| File.exists?(p) }
end
end
@@ -129,10 +139,12 @@ module Rails
def paths
raise "You need to set a path root" unless @root.path
+
result = @paths.map do |p|
path = File.expand_path(p, @root.path)
@glob ? Dir[File.join(path, @glob)] : path
end
+
result.flatten!
result.uniq!
result
diff --git a/railties/test/application/paths_test.rb b/railties/test/application/paths_test.rb
index 589e515d05..5ab558c026 100644
--- a/railties/test/application/paths_test.rb
+++ b/railties/test/application/paths_test.rb
@@ -71,6 +71,7 @@ module ApplicationTests
assert_in_load_path "lib"
assert_in_load_path "vendor"
+ assert_not_in_load_path "app", "views"
assert_not_in_load_path "app", "metal"
assert_not_in_load_path "config"
assert_not_in_load_path "config", "locales"