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

Fix issue causing middleware chain corruption when inserting before or after

#delete_if returns the chain, not the entry deleted.  Changed to use #index followed by #delete_at.
This commit is contained in:
Jack Royal-Gordon 2012-12-24 23:15:23 -08:00
parent aeb8177c37
commit 54da57aef9

View file

@ -77,13 +77,15 @@ module Sidekiq
end
def insert_before(oldklass, newklass, *args)
new_entry = entries.delete_if { |entry| entry.klass == newklass } || Entry.new(newklass, *args)
i = entries.index { |entry| entry.klass == newklass }
new_entry = i.nil? ? Entry.new(newklass, *args) : entries.delete_at(i)
i = entries.find_index { |entry| entry.klass == oldklass } || 0
entries.insert(i, new_entry)
end
def insert_after(oldklass, newklass, *args)
new_entry = entries.delete_if { |entry| entry.klass == newklass } || Entry.new(newklass, *args)
i = entries.index { |entry| entry.klass == newklass }
new_entry = i.nil? ? Entry.new(newklass, *args) : entries.delete_at(i)
i = entries.find_index { |entry| entry.klass == oldklass } || entries.count - 1
entries.insert(i+1, new_entry)
end