Skip to content

Commit 638112f

Browse files
author
Michael Bleigh
committed
Duplicate the middleware settings before manipulating them on endpoint compilation.
1 parent 5eb14e2 commit 638112f

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/grape/endpoint.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ def build_middleware
226226
b.use Grape::Middleware::Formatter, :default_format => settings[:default_format] || :json
227227

228228
aggregate_setting(:middleware).each do |m|
229+
m = m.dup
229230
block = m.pop if m.last.is_a?(Proc)
230231
if block
231232
b.use *m, &block

spec/grape/api_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,19 @@ def call(env)
414414
get '/'
415415
last_response.body.should == 'true'
416416
end
417+
418+
it 'should not destroy the middleware settings on multiple runs' do
419+
block = lambda{ }
420+
subject.use PhonyMiddleware, &block
421+
subject.get '/' do
422+
env['phony.block'].inspect
423+
end
424+
425+
2.times do
426+
get '/'
427+
last_response.body.should == 'true'
428+
end
429+
end
417430
end
418431
end
419432
describe '.basic' do

0 commit comments

Comments
 (0)