From 7969c9daca5c8d742df4080353995db8bf14f17d Mon Sep 17 00:00:00 2001 From: Ryan Buckley Date: Mon, 14 Dec 2015 18:10:26 -0800 Subject: [PATCH] Refactor logger conditional to use coercion and parallel assignment --- lib/grape/middleware/logger.rb | 9 ++------- spec/lib/grape/middleware/logger_spec.rb | 8 ++++---- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/lib/grape/middleware/logger.rb b/lib/grape/middleware/logger.rb index 09f6bc4..2a192b5 100644 --- a/lib/grape/middleware/logger.rb +++ b/lib/grape/middleware/logger.rb @@ -55,13 +55,8 @@ class Grape::Middleware::Logger < Grape::Middleware::Globals after_failure(error) throw(:error, error) else - # Usually a rack response object is returned: https://github.com/ruby-grape/grape/blob/master/UPGRADING.md#changes-in-middleware - # However, rack/auth/abstract/handler.rb still returns an array instead of a rack response object. - if @app_response.is_a?(Array) - after(@app_response[0]) - else - after(@app_response.status) - end + status, _, _ = *@app_response + after(status) end @app_response end diff --git a/spec/lib/grape/middleware/logger_spec.rb b/spec/lib/grape/middleware/logger_spec.rb index 4cfbf1e..7a1438e 100644 --- a/spec/lib/grape/middleware/logger_spec.rb +++ b/spec/lib/grape/middleware/logger_spec.rb @@ -40,20 +40,20 @@ describe Grape::Middleware::Logger do end context 'when calling the app results in an array response' do - let(:app_response_array) { [401, {}, []] } + let(:app_response) { [401, {}, []] } it 'calls +after+ with the correct status' do - expect(app).to receive(:call).with(env).and_return(app_response_array) + expect(app).to receive(:call).with(env).and_return(app_response) expect(subject).to receive(:before) expect(subject).to receive(:after).with(401) subject.call!(env) end it 'returns the @app_response' do - expect(app).to receive(:call).with(env).and_return(app_response_array) + expect(app).to receive(:call).with(env).and_return(app_response) allow(subject).to receive(:before) allow(subject).to receive(:after) - expect(subject.call!(env)).to eq app_response_array + expect(subject.call!(env)).to eq app_response end end end