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:
parent
1f89a886de
commit
c0bf21a8b3
2 changed files with 14 additions and 0 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue