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

Call run_afters even if throwing from run_befores

This commit is contained in:
James Fischer 2019-09-24 16:08:58 -07:00 committed by Mike Perham
parent 34fe914946
commit 08e8c79347
2 changed files with 30 additions and 10 deletions

View file

@ -283,18 +283,14 @@ module Sidekiq
action = self.class.match(env)
return [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found"]] unless action
resp = catch(:halt) {
app = @klass
resp = catch(:halt) do
self.class.run_befores(app, action)
begin
resp = action.instance_exec env, &action.block
action.instance_exec env, &action.block
ensure
self.class.run_afters(app, action)
end
resp
}
resp = case resp
when Array
resp

View file

@ -769,4 +769,28 @@ describe Sidekiq::Web do
end
end
end
describe "redirecting in before" do
include Rack::Test::Methods
before do
Sidekiq::WebApplication.before { Thread.current[:some_setting] = :before }
Sidekiq::WebApplication.before { redirect '/' }
Sidekiq::WebApplication.after { Thread.current[:some_setting] = :after }
end
after do
Sidekiq::WebApplication.remove_instance_variable(:@befores)
Sidekiq::WebApplication.remove_instance_variable(:@afters)
end
def app
Sidekiq::Web.new
end
it "allows afters to run" do
get '/'
assert_equal :after, Thread.current[:some_setting]
end
end
end