From d2306900bc1c2b742ea2b29d2bf120d0e9a9407e Mon Sep 17 00:00:00 2001
From: Fumiaki MATSUSHIMA <mtsmfm@gmail.com>
Date: Wed, 1 Feb 2017 00:06:51 +0900
Subject: 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 +-
 .../lib/action_view/template/handlers/erb/deprecated_erubis.rb   | 9 +++++++++
 .../test/template/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 @@ module ERBTest
     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
-- 
cgit v1.2.3