Skip to content

Commit 0989d38

Browse files
author
Geoff Massanek
committed
Add backtrace to expection 500 responses
1 parent 9716fd7 commit 0989d38

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

app/api/v1/presenters/error_presenter.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ def present
2323
private
2424

2525
def present_string_message(message)
26-
{
26+
data = {
2727
code: code,
2828
description: description,
2929
message: message
3030
}
31+
data[:backtrace] = self.error.backtrace if self.error.respond_to?(:backtrace)
32+
data
3133
end
3234

3335
def present_hash_message(message)

spec/api/v1/gurus_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def create_guru(explicit_params = {})
6565
expect(guru_response[:id]).to eq(guru.id)
6666
expect(guru_response[:username]).to eq(user_name)
6767
end
68+
6869
it "returns 404 when guru is not present" do
6970
get("gurus_api/v1/gurus/noname")
7071

@@ -113,6 +114,17 @@ def create_guru_with_followers(followers_count)
113114
expect(response_json[:gurus].second[:id]).to eq(guru3.id)
114115
expect(response_json[:gurus].last[:id]).to eq(guru1.id)
115116
end
117+
118+
it "error handling" do
119+
allow(Guru).to receive(:all).and_raise(StandardError.new)
120+
get("gurus_api/v1/gurus")
121+
122+
expect(last_response.status).to eq(500)
123+
expect(response_json[:errors].count).to be(1)
124+
expect(response_json[:errors][0][:code]).to be
125+
expect(response_json[:errors][0][:description]).to be
126+
expect(response_json[:errors][0][:backtrace]).to be
127+
end
116128
end
117129

118130
describe "POST /", :authenticated_user do

0 commit comments

Comments
 (0)