aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryuuji.yaginuma <yuuji.yaginuma@gmail.com>2019-02-15 15:48:55 +0900
committeryuuji.yaginuma <yuuji.yaginuma@gmail.com>2019-02-16 13:00:28 +0900
commit7878027ca7de3dc13716f5efb088553fdd04d220 (patch)
tree679a84417b55807fdcd910a939eafa874a304a27
parent16e235126ef0187a93b81ee959a8127097e2f394 (diff)
downloadrails-7878027ca7de3dc13716f5efb088553fdd04d220.tar.gz
rails-7878027ca7de3dc13716f5efb088553fdd04d220.tar.bz2
rails-7878027ca7de3dc13716f5efb088553fdd04d220.zip
Show deprecated message instead of raise exception in `compiled_method_container` method
Since #35036, the subclasses of `ActionView::Base` requires the `compiled_method_container`. This is incompatible. For example, `web-console` use view class that subclass of `ActionView::Base`, and does not work it now cause of this. Actually, since it seems that it is only `ActionView::Base` that `compiled_method_container` is necessary, modified the condition that emits a warning.
-rw-r--r--actionview/lib/action_view/base.rb14
-rw-r--r--actionview/test/template/render_test.rb7
2 files changed, 16 insertions, 5 deletions
diff --git a/actionview/lib/action_view/base.rb b/actionview/lib/action_view/base.rb
index 712e5d251e..c0d2d258c5 100644
--- a/actionview/lib/action_view/base.rb
+++ b/actionview/lib/action_view/base.rb
@@ -273,11 +273,15 @@ module ActionView #:nodoc:
end
def compiled_method_container
- raise NotImplementedError, <<~msg
- Subclasses of ActionView::Base must implement `compiled_method_container`
- or use the class method `with_empty_template_cache` for constructing
- an ActionView::Base subclass that has an empty cache.
- msg
+ if self.class == ActionView::Base
+ ActiveSupport::Deprecation.warn <<~eowarn
+ ActionView::Base instances must implement `compiled_method_container`
+ or use the class method `with_empty_template_cache` for constructing
+ an ActionView::Base instances that has an empty cache.
+ eowarn
+ end
+
+ self.class
end
def in_context(options, locals)
diff --git a/actionview/test/template/render_test.rb b/actionview/test/template/render_test.rb
index cda8c942d8..543df7a71a 100644
--- a/actionview/test/template/render_test.rb
+++ b/actionview/test/template/render_test.rb
@@ -367,6 +367,13 @@ module RenderTestCases
end
end
+ def test_without_compiled_method_container_is_deprecated
+ view = ActionView::Base.with_view_paths(ActionController::Base.view_paths)
+ assert_deprecated("ActionView::Base instances must implement `compiled_method_container`") do
+ assert_equal "Hello world!", view.render(file: "test/hello_world")
+ end
+ end
+
def test_render_partial_without_object_does_not_put_partial_name_to_local_assigns
assert_equal "false", @view.render(partial: "test/partial_name_in_local_assigns")
end