mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #7587 from elia/fix-too-eager-loading
Should not eager_load app/assets Conflicts: railties/CHANGELOG.md
This commit is contained in:
parent
71abfa511d
commit
3663057518
3 changed files with 17 additions and 6 deletions
|
@ -1,5 +1,7 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Don't eager-load app/assets and app/views *Elia Schito*
|
||||
|
||||
* Add `.rake` to list of file extensions included by `rake notes` and `rake notes:custom`. *Brent J. Nordquist*
|
||||
|
||||
* New test locations `test/models`, `test/helpers`, `test/controllers`, and
|
||||
|
|
|
@ -99,14 +99,15 @@ module Rails
|
|||
protected
|
||||
|
||||
def filter_by(constraint)
|
||||
all = []
|
||||
yes = []
|
||||
no = []
|
||||
|
||||
all_paths.each do |path|
|
||||
if path.send(constraint)
|
||||
paths = path.existent
|
||||
paths -= path.children.map { |p| p.send(constraint) ? [] : p.existent }.flatten
|
||||
all.concat(paths)
|
||||
end
|
||||
paths = path.existent + path.existent_base_paths
|
||||
path.send(constraint) ? yes.concat(paths) : no.concat(paths)
|
||||
end
|
||||
|
||||
all = yes - no
|
||||
all.uniq!
|
||||
all
|
||||
end
|
||||
|
@ -134,6 +135,7 @@ module Rails
|
|||
keys.delete(@current)
|
||||
@root.values_at(*keys.sort)
|
||||
end
|
||||
deprecate :children
|
||||
|
||||
def first
|
||||
expanded.first
|
||||
|
@ -210,6 +212,10 @@ module Rails
|
|||
expanded.select { |d| File.directory?(d) }
|
||||
end
|
||||
|
||||
def existent_base_paths
|
||||
map { |p| File.expand_path(p, @root.path) }.select{ |f| File.exist? f }
|
||||
end
|
||||
|
||||
alias to_a expanded
|
||||
end
|
||||
end
|
||||
|
|
|
@ -59,6 +59,8 @@ module ApplicationTests
|
|||
assert eager_load.include?(root("app/controllers"))
|
||||
assert eager_load.include?(root("app/helpers"))
|
||||
assert eager_load.include?(root("app/models"))
|
||||
assert !eager_load.include?(root("app/views")), "expected to not be in the eager_load_path"
|
||||
assert !eager_load.include?(root("app/assets")), "expected to not be in the eager_load_path"
|
||||
end
|
||||
|
||||
test "environments has a glob equal to the current environment" do
|
||||
|
@ -73,6 +75,7 @@ module ApplicationTests
|
|||
assert_in_load_path "vendor"
|
||||
|
||||
assert_not_in_load_path "app", "views"
|
||||
assert_not_in_load_path "app", "assets"
|
||||
assert_not_in_load_path "config"
|
||||
assert_not_in_load_path "config", "locales"
|
||||
assert_not_in_load_path "config", "environments"
|
||||
|
|
Loading…
Reference in a new issue