From 517b96207d0e083a42b81414efa9f9b6ba300e03 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 24 Jan 2019 12:43:07 -0800 Subject: [PATCH] Pull generated methods up in to the anonymous subclass Then we don't need the extra module. --- .../lib/action_dispatch/middleware/debug_view.rb | 7 +------ actionview/lib/action_view/base.rb | 11 ++++++----- actionview/test/template/render_test.rb | 9 +-------- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/actionpack/lib/action_dispatch/middleware/debug_view.rb b/actionpack/lib/action_dispatch/middleware/debug_view.rb index 499bb1b391..f16484d1ea 100644 --- a/actionpack/lib/action_dispatch/middleware/debug_view.rb +++ b/actionpack/lib/action_dispatch/middleware/debug_view.rb @@ -9,11 +9,6 @@ module ActionDispatch class DebugView < ActionView::Base # :nodoc: RESCUES_TEMPLATE_PATH = File.expand_path("templates", __dir__) - module CompiledTemplates - end - - include CompiledTemplates - def initialize(assigns) paths = [RESCUES_TEMPLATE_PATH] renderer = ActionView::Renderer.new ActionView::LookupContext.new(paths) @@ -21,7 +16,7 @@ module ActionDispatch end def compiled_method_container - CompiledTemplates + self.class end def debug_params(params) diff --git a/actionview/lib/action_view/base.rb b/actionview/lib/action_view/base.rb index c5d8cdd409..71aa68499d 100644 --- a/actionview/lib/action_view/base.rb +++ b/actionview/lib/action_view/base.rb @@ -182,11 +182,12 @@ module ActionView #:nodoc: end def with_empty_template_cache # :nodoc: - template_container = Module.new - Class.new(self) { - include template_container - define_method(:compiled_method_container) { template_container } - define_singleton_method(:compiled_method_container) { template_container } + subclass = Class.new(self) { + # We can't implement these as self.class because subclasses will + # share the same template cache as superclasses, so "changed?" won't work + # correctly. + define_method(:compiled_method_container) { subclass } + define_singleton_method(:compiled_method_container) { subclass } } end diff --git a/actionview/test/template/render_test.rb b/actionview/test/template/render_test.rb index 372b85a4a5..b8d8717db4 100644 --- a/actionview/test/template/render_test.rb +++ b/actionview/test/template/render_test.rb @@ -19,15 +19,8 @@ module RenderTestCases end.with_view_paths(paths, @assigns) controller = TestController.new - view = @view - @controller_view = Class.new(controller.view_context_class) do - include view.compiled_method_container - - define_method(:compiled_method_container) do - view.compiled_method_container - end - end.new(controller.view_renderer, controller.view_assigns, controller) + @controller_view = controller.view_context_class.with_empty_template_cache.new(controller.view_renderer, controller.view_assigns, controller) # Reload and register danish language for testing I18n.backend.store_translations "da", {}