aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2019-01-24 12:43:07 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2019-02-06 16:57:34 -0800
commit517b96207d0e083a42b81414efa9f9b6ba300e03 (patch)
tree53bef0178456e1b323dd0e3a41819dad88bf4305
parent6dcd43b2a8a81b6131f5a569fffae6a17d337032 (diff)
downloadrails-517b96207d0e083a42b81414efa9f9b6ba300e03.tar.gz
rails-517b96207d0e083a42b81414efa9f9b6ba300e03.tar.bz2
rails-517b96207d0e083a42b81414efa9f9b6ba300e03.zip
Pull generated methods up in to the anonymous subclass
Then we don't need the extra module.
-rw-r--r--actionpack/lib/action_dispatch/middleware/debug_view.rb7
-rw-r--r--actionview/lib/action_view/base.rb11
-rw-r--r--actionview/test/template/render_test.rb9
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", {}