diff options
author | Aaron Patterson <tenderlove@github.com> | 2019-02-05 16:41:43 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-05 16:41:43 -0800 |
commit | 9483cdee0a3ed9c686e338f079b0e369597b1211 (patch) | |
tree | 09b312964b87fb8237e45e7e6bd1703e9f0bafcc /actionview/lib/action_view/template.rb | |
parent | 8d06c108c7af1e9a5db9f6d3c79fc5584cc3784e (diff) | |
parent | 24b068bea13e8f91397b3440494f0a5326f80882 (diff) | |
download | rails-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.rb | 9 |
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]] |