diff --git a/CHANGELOG.md b/CHANGELOG.md index cffd304..1bcabe7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### 2.2.1 (Next) * Your contribution here. +* [#180](https://github.com/slack-ruby/slack-ruby-bot-server/pull/180): Add support for Grape v3 - [@markokajzer](https://github.com/markokajzer). ### 2.2.0 (2025/09/22) diff --git a/lib/slack-ruby-bot-server/api/helpers/error_helpers.rb b/lib/slack-ruby-bot-server/api/helpers/error_helpers.rb index 2f12606..8732c0f 100644 --- a/lib/slack-ruby-bot-server/api/helpers/error_helpers.rb +++ b/lib/slack-ruby-bot-server/api/helpers/error_helpers.rb @@ -10,42 +10,42 @@ module ErrorHelpers Middleware.logger.error "#{e.class.name}: #{e.message}\n #{backtrace}" error = { type: 'other_error', message: e.message } error[:backtrace] = backtrace - rack_response(error.to_json, 400) + error!(error, 400) end # rescue document validation errors into detail json if SlackRubyBotServer::Config.mongoid? rescue_from Mongoid::Errors::Validations do |e| backtrace = e.backtrace[0..5].join("\n ") Middleware.logger.warn "#{e.class.name}: #{e.message}\n #{backtrace}" - rack_response({ - type: 'param_error', - message: e.document.errors.full_messages.uniq.join(', ') + '.', - detail: e.document.errors.messages.each_with_object({}) do |(k, v), h| - h[k] = v.uniq - end - }.to_json, 400) + error!({ + type: 'param_error', + message: e.document.errors.full_messages.uniq.join(', ') + '.', + detail: e.document.errors.messages.each_with_object({}) do |(k, v), h| + h[k] = v.uniq + end + }, 400) end end rescue_from Grape::Exceptions::Validation do |e| backtrace = e.backtrace[0..5].join("\n ") Middleware.logger.warn "#{e.class.name}: #{e.message}\n #{backtrace}" - rack_response({ - type: 'param_error', - message: 'Invalid parameters.', - detail: { e.params.join(', ') => [e.message] } - }.to_json, 400) + error!({ + type: 'param_error', + message: 'Invalid parameters.', + detail: { e.params.join(', ') => [e.message] } + }, 400) end rescue_from Grape::Exceptions::ValidationErrors do |e| backtrace = e.backtrace[0..5].join("\n ") Middleware.logger.warn "#{e.class.name}: #{e.message}\n #{backtrace}" - rack_response({ - type: 'param_error', - message: 'Invalid parameters.', - detail: e.errors.each_with_object({}) do |(k, v), h| - # JSON does not permit having a key of type Array - h[k.count == 1 ? k.first : k.join(', ')] = v - end - }.to_json, 400) + error!({ + type: 'param_error', + message: 'Invalid parameters.', + detail: e.errors.each_with_object({}) do |(k, v), h| + # JSON does not permit having a key of type Array + h[k.count == 1 ? k.first : k.join(', ')] = v + end + }, 400) end end end