From d2306900bc1c2b742ea2b29d2bf120d0e9a9407e Mon Sep 17 00:00:00 2001 From: Fumiaki MATSUSHIMA Date: Wed, 1 Feb 2017 00:06:51 +0900 Subject: [PATCH] Fix inherit from deprecated `ActionView::Template::Handlers::Erubis` There are some classes inherit from `ActionView::Template::Handlers::Erubis`. (ex. https://github.com/haml/haml/blob/4.0.7/lib/haml/helpers/safe_erubis_template.rb#L3) ``` Class.new(ActionView::Template::Handlers::Erubis) # => TypeError: superclass must be a Class (ActiveSupport::Deprecation::DeprecatedConstantProxy given) ``` --- actionview/lib/action_view/template/handlers/erb.rb | 2 +- .../template/handlers/erb/deprecated_erubis.rb | 9 +++++++++ .../erb/deprecated_erubis_implementation_test.rb | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 actionview/lib/action_view/template/handlers/erb/deprecated_erubis.rb diff --git a/actionview/lib/action_view/template/handlers/erb.rb b/actionview/lib/action_view/template/handlers/erb.rb index cee5408aa9..58c7fd1a88 100644 --- a/actionview/lib/action_view/template/handlers/erb.rb +++ b/actionview/lib/action_view/template/handlers/erb.rb @@ -1,7 +1,7 @@ module ActionView class Template module Handlers - Erubis = ActiveSupport::Deprecation::DeprecatedConstantProxy.new("Erubis", "ActionView::Template::Handlers::ERB::Erubis", message: "ActionView::Template::Handlers::Erubis is deprecated and will be removed from Rails 5.2. Switch to ActionView::Template::Handlers::ERB::Erubi instead.") + autoload :Erubis, "action_view/template/handlers/erb/deprecated_erubis" class ERB autoload :Erubi, "action_view/template/handlers/erb/erubi" diff --git a/actionview/lib/action_view/template/handlers/erb/deprecated_erubis.rb b/actionview/lib/action_view/template/handlers/erb/deprecated_erubis.rb new file mode 100644 index 0000000000..427ea20064 --- /dev/null +++ b/actionview/lib/action_view/template/handlers/erb/deprecated_erubis.rb @@ -0,0 +1,9 @@ +::ActiveSupport::Deprecation.warn("ActionView::Template::Handlers::Erubis is deprecated and will be removed from Rails 5.2. Switch to ActionView::Template::Handlers::ERB::Erubi instead.") + +module ActionView + class Template + module Handlers + Erubis = ERB::Erubis + end + end +end diff --git a/actionview/test/template/erb/deprecated_erubis_implementation_test.rb b/actionview/test/template/erb/deprecated_erubis_implementation_test.rb index 4a130e6c33..aaf99f85c0 100644 --- a/actionview/test/template/erb/deprecated_erubis_implementation_test.rb +++ b/actionview/test/template/erb/deprecated_erubis_implementation_test.rb @@ -5,6 +5,8 @@ class DeprecatedErubisImplementationTest < ActionView::TestCase test "Erubis implementation is deprecated" do assert_deprecated "ActionView::Template::Handlers::Erubis is deprecated and will be removed from Rails 5.2. Switch to ActionView::Template::Handlers::ERB::Erubi instead." do assert_equal "ActionView::Template::Handlers::ERB::Erubis", ActionView::Template::Handlers::Erubis.to_s + + assert_nothing_raised { Class.new(ActionView::Template::Handlers::Erubis) } end end end