1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Introduce chain#prepend possible fix for #2020

This commit is contained in:
Abdelkader Boudih 2014-10-28 17:59:45 +00:00
parent 1f89a886de
commit c0bf21a8b3
2 changed files with 14 additions and 0 deletions

View file

@ -89,6 +89,11 @@ module Sidekiq
entries << Entry.new(klass, *args)
end
def prepend(klass, *args)
remove(klass) if exists?(klass)
entries.insert(0, Entry.new(klass, *args))
end
def insert_before(oldklass, newklass, *args)
i = entries.index { |entry| entry.klass == newklass }
new_entry = i.nil? ? Entry.new(newklass, *args) : entries.delete_at(i)

View file

@ -96,6 +96,15 @@ class TestMiddleware < Sidekiq::Test
assert_equal 1, chain.count
end
it 'correctly prepends middleware' do
chain = Sidekiq::Middleware::Chain.new
chain_entries = chain.entries
chain.add CustomMiddleware
chain.prepend YetAnotherCustomMiddleware
assert_equal YetAnotherCustomMiddleware, chain_entries.first.klass
assert_equal CustomMiddleware, chain_entries.last.klass
end
it 'allows middleware to abruptly stop processing rest of chain' do
recorder = []
chain = Sidekiq::Middleware::Chain.new