From 382e357a554420030c8cc6635240b3ed8707c537 Mon Sep 17 00:00:00 2001 From: Kevin Robayna Date: Fri, 23 Jun 2023 09:22:37 +0100 Subject: [PATCH] feat: Include details for web api errors fixes: https://github.com/slack-ruby/slack-ruby-client/issues/482 Currently when we get the error message we get no details of what went wrong unless we get the response_metadata for the error which is not intuitive as most people when they get an error and print the exception they would expect to see as much details as possible. Additionally updated ruby-version in the project to be the latest as most people would be using that one as their default, though not changing the one required by the gem --- .ruby-version | 2 +- lib/slack/web/api/errors/slack_error.rb | 6 ++++++ spec/slack/web/api/errors/slack_error_spec.rb | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.ruby-version b/.ruby-version index 49cdd668..944880fa 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.6 +3.2.0 diff --git a/lib/slack/web/api/errors/slack_error.rb b/lib/slack/web/api/errors/slack_error.rb index 92e4e03e..7b764100 100644 --- a/lib/slack/web/api/errors/slack_error.rb +++ b/lib/slack/web/api/errors/slack_error.rb @@ -22,6 +22,12 @@ def errors def response_metadata response.body.response_metadata end + + def to_s + errors_message = ", errors=#{errors}" unless errors.nil? + response_metadata_message = ", response_metadata=#{response_metadata}" unless response_metadata.nil? + "#{error}#{errors_message || ''}#{response_metadata_message || ''}" + end end end end diff --git a/spec/slack/web/api/errors/slack_error_spec.rb b/spec/slack/web/api/errors/slack_error_spec.rb index 194a594e..1bef760c 100644 --- a/spec/slack/web/api/errors/slack_error_spec.rb +++ b/spec/slack/web/api/errors/slack_error_spec.rb @@ -21,7 +21,7 @@ rescue described_class => e expect(e.response).not_to be_nil expect(e.response.status).to eq 200 - expect(e.message).to eql 'invalid_arguments' + expect(e.message).to eql "invalid_arguments, response_metadata=#{e.response_metadata}" expect(e.error).to eql 'invalid_arguments' expect(e.response_metadata).to eq( 'messages' => [