From 1fcfb77ce606d42089298f0d7976dff60a24e443 Mon Sep 17 00:00:00 2001 From: Michael Hale Date: Tue, 20 Dec 2016 11:23:08 -0500 Subject: [PATCH 1/3] A rack env is a simple hash and as such will never respond to the method `body`. It does however have a key of `rack.input`. --- lib/pliny/error_reporters/rollbar.rb | 2 +- spec/error_reporters/rollbar_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pliny/error_reporters/rollbar.rb b/lib/pliny/error_reporters/rollbar.rb index 7256cdde..82a6daeb 100644 --- a/lib/pliny/error_reporters/rollbar.rb +++ b/lib/pliny/error_reporters/rollbar.rb @@ -19,7 +19,7 @@ def notify(exception, context:, rack_env:) def fetch_scope(context:, rack_env:) scope = {} - if rack_env.respond_to?(:body) + if rack_env.has_key?("rack.input") scope[:request] = proc { extract_request_data_from_rack(rack_env) } end scope diff --git a/spec/error_reporters/rollbar_spec.rb b/spec/error_reporters/rollbar_spec.rb index 079286a8..e6291665 100644 --- a/spec/error_reporters/rollbar_spec.rb +++ b/spec/error_reporters/rollbar_spec.rb @@ -8,7 +8,7 @@ describe "#notify" do let(:exception) { StandardError.new("Something went wrong") } let(:context) { {} } - let(:rack_env) { double(:rack_env, body: StringIO.new) } + let(:rack_env) { { "rack.input" => StringIO.new } } subject(:notify) do reporter.notify(exception, context: context, rack_env: rack_env) From bbfc6d65f6f4fee3135766257ab3f0a2e18ecd48 Mon Sep 17 00:00:00 2001 From: Michael Hale Date: Wed, 4 Jan 2017 11:56:09 -0500 Subject: [PATCH 2/3] More generic check for rack_env being populated --- lib/pliny/error_reporters/rollbar.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pliny/error_reporters/rollbar.rb b/lib/pliny/error_reporters/rollbar.rb index 82a6daeb..ad95c12d 100644 --- a/lib/pliny/error_reporters/rollbar.rb +++ b/lib/pliny/error_reporters/rollbar.rb @@ -19,7 +19,7 @@ def notify(exception, context:, rack_env:) def fetch_scope(context:, rack_env:) scope = {} - if rack_env.has_key?("rack.input") + unless rack_env.empty? scope[:request] = proc { extract_request_data_from_rack(rack_env) } end scope From 957fe6d63bf288079e0211384ecf76a7a23ec456 Mon Sep 17 00:00:00 2001 From: Michael Hale Date: Wed, 4 Jan 2017 12:22:12 -0500 Subject: [PATCH 3/3] Document that rack_env must be a Hash --- spec/error_reporters/rollbar_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/error_reporters/rollbar_spec.rb b/spec/error_reporters/rollbar_spec.rb index e6291665..325bb0c4 100644 --- a/spec/error_reporters/rollbar_spec.rb +++ b/spec/error_reporters/rollbar_spec.rb @@ -41,6 +41,10 @@ context "given an empty rack_env" do let(:rack_env) { {} } + it "expects rack_env to be a hash" do + assert_kind_of(Hash, rack_env) + end + it "reports to Rollbar with an empty scope" do notify expect(Rollbar).to have_received(:scoped).once.with({})