aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view/dependency_tracker.rb
diff options
context:
space:
mode:
authorJuho Leinonen <messionyk@gmail.com>2015-02-24 16:08:05 +0200
committerJuho Leinonen <messionyk@gmail.com>2015-02-25 14:57:29 +0200
commit4640c346ea6c3a220152ec5749fb479062b273cc (patch)
tree15dd58ea21a74d5c7e88115d2c3cd21f811f34fc /actionview/lib/action_view/dependency_tracker.rb
parent5a6868b6175167d91fcfaed82b4d4627281a4878 (diff)
downloadrails-4640c346ea6c3a220152ec5749fb479062b273cc.tar.gz
rails-4640c346ea6c3a220152ec5749fb479062b273cc.tar.bz2
rails-4640c346ea6c3a220152ec5749fb479062b273cc.zip
Fix dependency tracker bug
Diffstat (limited to 'actionview/lib/action_view/dependency_tracker.rb')
-rw-r--r--actionview/lib/action_view/dependency_tracker.rb19
1 files changed, 15 insertions, 4 deletions
diff --git a/actionview/lib/action_view/dependency_tracker.rb b/actionview/lib/action_view/dependency_tracker.rb
index e34bdd4a46..7a7e116dbb 100644
--- a/actionview/lib/action_view/dependency_tracker.rb
+++ b/actionview/lib/action_view/dependency_tracker.rb
@@ -76,6 +76,12 @@ module ActionView
(?:#{STRING}|#{VARIABLE_OR_METHOD_CHAIN}) # finally, the dependency name of interest
/xm
+ LAYOUT_DEPENDENCY = /\A
+ (?:\s*\(?\s*) # optional opening paren surrounded by spaces
+ (?:.*?#{LAYOUT_HASH_KEY}) # check if the line has layout key declaration
+ (?:#{STRING}|#{VARIABLE_OR_METHOD_CHAIN}) # finally, the dependency name of interest
+ /xm
+
def self.call(name, template)
new(name, template).dependencies
end
@@ -106,15 +112,20 @@ module ActionView
render_calls = source.split(/\brender\b/).drop(1)
render_calls.each do |arguments|
- arguments.scan(RENDER_ARGUMENTS) do
- add_dynamic_dependency(render_dependencies, Regexp.last_match[:dynamic])
- add_static_dependency(render_dependencies, Regexp.last_match[:static])
- end
+ add_dependencies(render_dependencies, arguments, LAYOUT_DEPENDENCY)
+ add_dependencies(render_dependencies, arguments, RENDER_ARGUMENTS)
end
render_dependencies.uniq
end
+ def add_dependencies(render_dependencies, arguments, pattern)
+ arguments.scan(pattern) do
+ add_dynamic_dependency(render_dependencies, Regexp.last_match[:dynamic])
+ add_static_dependency(render_dependencies, Regexp.last_match[:static])
+ end
+ end
+
def add_dynamic_dependency(dependencies, dependency)
if dependency
dependencies << "#{dependency.pluralize}/#{dependency.singularize}"