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

finish deprecating handling strings and symbols

since we only work with instances of classes, it greatly simplifies the
`Middleware` implementation.
This commit is contained in:
Aaron Patterson 2015-08-07 15:35:39 -07:00
parent 83b767cef9
commit 2a3c47ff5d
6 changed files with 24 additions and 80 deletions

View file

@ -14,17 +14,6 @@ module ActionDispatch
def name; klass.name; end
def ==(middleware)
case middleware
when Middleware
klass == middleware.klass
when Class
klass == middleware
else
normalize(name) == normalize(middleware)
end
end
def inspect
klass.to_s
end
@ -32,12 +21,6 @@ module ActionDispatch
def build(app)
klass.new(app, *args, &block)
end
private
def normalize(object)
object.to_s.strip.sub(/^::/, '')
end
end
include Enumerable
@ -92,7 +75,8 @@ module ActionDispatch
end
def delete(target)
middlewares.delete target
target = get_class target
middlewares.delete_if { |m| m.klass == target }
end
def use(klass, *args, &block)
@ -106,7 +90,8 @@ module ActionDispatch
protected
def assert_index(index, where)
i = index.is_a?(Integer) ? index : middlewares.index(index)
index = get_class index
i = index.is_a?(Integer) ? index : middlewares.index { |m| m.klass == index }
raise "No such middleware to insert #{where}: #{index.inspect}" unless i
i
end

View file

@ -329,7 +329,7 @@ class FlashIntegrationTest < ActionDispatch::IntegrationTest
@app = self.class.build_app(set) do |middleware|
middleware.use ActionDispatch::Session::CookieStore, :key => SessionKey
middleware.use ActionDispatch::Flash
middleware.delete "ActionDispatch::ShowExceptions"
middleware.delete ActionDispatch::ShowExceptions
end
yield

View file

@ -1,56 +0,0 @@
require 'abstract_unit'
require 'action_dispatch/middleware/stack'
module ActionDispatch
class MiddlewareStack
class MiddlewareTest < ActiveSupport::TestCase
class Omg; end
{
'concrete' => Omg,
'anonymous' => Class.new
}.each do |name, klass|
define_method("test_#{name}_klass") do
stack = ActionDispatch::MiddlewareStack.new
stack.use klass
assert_equal klass, stack.first.klass
end
define_method("test_#{name}_==") do
stack = ActionDispatch::MiddlewareStack.new
stack.use klass
stack.use klass
assert_equal 2, stack.size
assert_equal stack.first, stack.last
end
end
attr_reader :stack
def setup
@stack = ActionDispatch::MiddlewareStack.new
end
def test_double_equal_works_with_classes
k = Class.new
stack.use k
assert_operator stack.first, :==, k
result = stack.first != Class.new
assert result, 'middleware should not equal other anon class'
end
def test_double_equal_works_with_strings
stack.use Omg
assert_operator stack.first, :==, Omg.name
end
def test_double_equal_normalizes_strings
stack.use Omg
assert_operator stack.first, :==, "::#{Omg.name}"
end
end
end
end

View file

@ -4,6 +4,7 @@ class MiddlewareStackTest < ActiveSupport::TestCase
class FooMiddleware; end
class BarMiddleware; end
class BazMiddleware; end
class HiyaMiddleware; end
class BlockMiddleware
attr_reader :block
def initialize(&block)
@ -17,6 +18,20 @@ class MiddlewareStackTest < ActiveSupport::TestCase
@stack.use BarMiddleware
end
def test_delete_with_string_is_deprecated
assert_deprecated do
assert_difference "@stack.size", -1 do
@stack.delete FooMiddleware.name
end
end
end
def test_delete_works
assert_difference "@stack.size", -1 do
@stack.delete FooMiddleware
end
end
test "use should push middleware as class onto the stack" do
assert_difference "@stack.size" do
@stack.use BazMiddleware
@ -100,11 +115,11 @@ class MiddlewareStackTest < ActiveSupport::TestCase
test "raise an error on invalid index" do
assert_raise RuntimeError do
@stack.insert("HiyaMiddleware", BazMiddleware)
@stack.insert(HiyaMiddleware, BazMiddleware)
end
assert_raise RuntimeError do
@stack.insert_after("HiyaMiddleware", BazMiddleware)
@stack.insert_after(HiyaMiddleware, BazMiddleware)
end
end

View file

@ -170,7 +170,7 @@ class CacheStoreTest < ActionDispatch::IntegrationTest
@app = self.class.build_app(set) do |middleware|
@cache = ActiveSupport::Cache::MemoryStore.new
middleware.use ActionDispatch::Session::CacheStore, :key => '_session_id', :cache => @cache
middleware.delete "ActionDispatch::ShowExceptions"
middleware.delete ActionDispatch::ShowExceptions
end
yield

View file

@ -348,7 +348,7 @@ class CookieStoreTest < ActionDispatch::IntegrationTest
@app = self.class.build_app(set) do |middleware|
middleware.use ActionDispatch::Session::CookieStore, options
middleware.delete "ActionDispatch::ShowExceptions"
middleware.delete ActionDispatch::ShowExceptions
end
yield