Skip to content

Commit

Permalink
Remove app/views from the load paths [#4226 state:resolved]
Browse files Browse the repository at this point in the history
  • Loading branch information
josevalim committed Apr 5, 2010
1 parent 6690d66 commit c140aca
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
2 changes: 1 addition & 1 deletion railties/lib/rails/engine/configuration.rb
Expand Up @@ -20,7 +20,7 @@ def paths
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"
Expand Down
22 changes: 17 additions & 5 deletions railties/lib/rails/paths.rb
Expand Up @@ -3,6 +3,8 @@
module Rails
module Paths
module PathParent
attr_reader :children

def method_missing(id, *args)
name = id.to_s

Expand Down Expand Up @@ -37,15 +39,15 @@ def all_paths
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(*)
Expand All @@ -58,8 +60,16 @@ def push(*)

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

Expand Down Expand Up @@ -129,10 +139,12 @@ def load_path?

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
Expand Down
1 change: 1 addition & 0 deletions railties/test/application/paths_test.rb
Expand Up @@ -71,6 +71,7 @@ def assert_not_in_load_path(*path)
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"
Expand Down

0 comments on commit c140aca

Please sign in to comment.