From ac36b45672513417d59ab8960b49ff1f8707d352 Mon Sep 17 00:00:00 2001
From: Zuhao Wan <wanzuhao@gmail.com>
Date: Sun, 18 May 2014 16:54:20 +0800
Subject: Add ActionController::Renderers.remove.

---
 actionpack/lib/action_controller/metal/renderers.rb | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

(limited to 'actionpack/lib')

diff --git a/actionpack/lib/action_controller/metal/renderers.rb b/actionpack/lib/action_controller/metal/renderers.rb
index 0443b73953..29ce5abd55 100644
--- a/actionpack/lib/action_controller/metal/renderers.rb
+++ b/actionpack/lib/action_controller/metal/renderers.rb
@@ -6,6 +6,11 @@ module ActionController
     Renderers.add(key, &block)
   end
 
+  # See <tt>Renderers.remove</tt>
+  def self.remove_renderer(key)
+    Renderers.remove(key)
+  end
+
   class MissingRenderer < LoadError
     def initialize(format)
       super "No renderer defined for format: #{format}"
@@ -83,6 +88,17 @@ module ActionController
       RENDERERS << key.to_sym
     end
 
+    # This method is the opposite of add method.
+    #
+    # Usage:
+    #
+    #   ActionController::Renderers.remove(:csv)
+    def self.remove(key)
+      RENDERERS.delete(key.to_sym)
+      method = "_render_option_#{key}"
+      remove_method(method) if method_defined?(method)
+    end
+
     module All
       extend ActiveSupport::Concern
       include Renderers
-- 
cgit v1.2.3