aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view/template.rb
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@github.com>2019-02-05 16:41:43 -0800
committerGitHub <noreply@github.com>2019-02-05 16:41:43 -0800
commit9483cdee0a3ed9c686e338f079b0e369597b1211 (patch)
tree09b312964b87fb8237e45e7e6bd1703e9f0bafcc /actionview/lib/action_view/template.rb
parent8d06c108c7af1e9a5db9f6d3c79fc5584cc3784e (diff)
parent24b068bea13e8f91397b3440494f0a5326f80882 (diff)
downloadrails-9483cdee0a3ed9c686e338f079b0e369597b1211.tar.gz
rails-9483cdee0a3ed9c686e338f079b0e369597b1211.tar.bz2
rails-9483cdee0a3ed9c686e338f079b0e369597b1211.zip
Merge pull request #35171 from rails/speed-up-partials
Speed up partial rendering by caching "variable" calculation
Diffstat (limited to 'actionview/lib/action_view/template.rb')
-rw-r--r--actionview/lib/action_view/template.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/actionview/lib/action_view/template.rb b/actionview/lib/action_view/template.rb
index 3b2c264ed4..8a5407c622 100644
--- a/actionview/lib/action_view/template.rb
+++ b/actionview/lib/action_view/template.rb
@@ -128,6 +128,8 @@ module ActionView
end
end
+ attr_reader :variable
+
def initialize(source, identifier, handler, details)
format = details[:format] || (handler.default_format if handler.respond_to?(:default_format))
@@ -138,6 +140,13 @@ module ActionView
@original_encoding = nil
@locals = details[:locals] || []
@virtual_path = details[:virtual_path]
+
+ @variable = if @virtual_path
+ base = @virtual_path[-1] == "/" ? "" : File.basename(@virtual_path)
+ base =~ /\A_?(.*?)(?:\.\w+)*\z/
+ $1.to_sym
+ end
+
@updated_at = details[:updated_at] || Time.now
@formats = Array(format).map { |f| f.respond_to?(:ref) ? f.ref : f }
@variants = [details[:variant]]