aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJose and Yehuda <wycats@gmail.com>2011-09-26 18:57:49 -0400
committerJose and Yehuda <wycats@gmail.com>2011-10-15 18:40:37 +0200
commita4c04a43cc96d9c94b7a5ecd5c7458fdc2f8617f (patch)
treed0fe1fa89d833507fdf4b2456028da5cf3081cf3
parent8ff7693a8dc61f43fc4eaf72ed24d3b8699191fe (diff)
downloadrails-a4c04a43cc96d9c94b7a5ecd5c7458fdc2f8617f.tar.gz
rails-a4c04a43cc96d9c94b7a5ecd5c7458fdc2f8617f.tar.bz2
rails-a4c04a43cc96d9c94b7a5ecd5c7458fdc2f8617f.zip
Refactor to make renderers a Set
-rw-r--r--actionpack/lib/action_controller/metal/renderers.rb20
1 files changed, 9 insertions, 11 deletions
diff --git a/actionpack/lib/action_controller/metal/renderers.rb b/actionpack/lib/action_controller/metal/renderers.rb
index 0ad9dbeda9..6e9ce450ac 100644
--- a/actionpack/lib/action_controller/metal/renderers.rb
+++ b/actionpack/lib/action_controller/metal/renderers.rb
@@ -1,5 +1,6 @@
require 'active_support/core_ext/class/attribute'
require 'active_support/core_ext/object/blank'
+require 'set'
module ActionController
# See <tt>Renderers.add</tt>
@@ -12,16 +13,13 @@ module ActionController
included do
class_attribute :_renderers
- self._renderers = {}.freeze
+ self._renderers = Set.new.freeze
end
module ClassMethods
def use_renderers(*args)
- new = _renderers.dup
- args.each do |key|
- new[key] = RENDERERS[key]
- end
- self._renderers = new.freeze
+ renderers = _renderers + args
+ self._renderers = renderers.freeze
end
alias use_renderer use_renderers
end
@@ -31,10 +29,10 @@ module ActionController
end
def _handle_render_options(options)
- _renderers.each do |name, value|
- if options.key?(name.to_sym)
+ _renderers.each do |name|
+ if options.key?(name)
_process_options(options)
- return send("_render_option_#{name}", options.delete(name.to_sym), options)
+ return send("_render_option_#{name}", options.delete(name), options)
end
end
nil
@@ -42,7 +40,7 @@ module ActionController
# Hash of available renderers, mapping a renderer name to its proc.
# Default keys are :json, :js, :xml.
- RENDERERS = {}
+ RENDERERS = Set.new
# Adds a new renderer to call within controller actions.
# A renderer is invoked by passing its name as an option to
@@ -79,7 +77,7 @@ module ActionController
# <tt>ActionController::MimeResponds#respond_with</tt>
def self.add(key, &block)
define_method("_render_option_#{key}", &block)
- RENDERERS[key] = block
+ RENDERERS << key.to_sym
end
module All