1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Simplify middleware stack lazy compares using named const references

This commit is contained in:
Jeremy Kemper 2010-06-05 20:34:30 -07:00
parent 9d0d6f7d26
commit 509f3d7d2f

View file

@ -5,13 +5,13 @@ module ActionDispatch
class Middleware
attr_reader :args, :block
def initialize(klass, *args, &block)
@klass, @args, @block = klass, args, block
def initialize(klass_or_name, *args, &block)
@ref = ActiveSupport::Dependencies::Reference.new(klass_or_name)
@args, @block = args, block
end
def klass
return @klass if @klass.respond_to?(:new)
@klass = ActiveSupport::Inflector.constantize(@klass.to_s)
@ref.get
end
def ==(middleware)
@ -21,11 +21,7 @@ module ActionDispatch
when Class
klass == middleware
else
if lazy_compare?(@klass) && lazy_compare?(middleware)
normalize(@klass) == normalize(middleware)
else
klass.name == normalize(middleware.to_s)
end
normalize(@ref.name) == normalize(middleware)
end
end
@ -39,10 +35,6 @@ module ActionDispatch
private
def lazy_compare?(object)
object.is_a?(String) || object.is_a?(Symbol)
end
def normalize(object)
object.to_s.strip.sub(/^::/, '')
end