Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
### 2.2.1 (Next)

* Your contribution here.
* [#180](https://github.com/slack-ruby/slack-ruby-bot-server/pull/180): grape v3 compatibility - [@markokajzer](https://github.com/markokajzer).
Comment thread
markokajzer marked this conversation as resolved.
Outdated

### 2.2.0 (2025/09/22)

Expand Down
42 changes: 21 additions & 21 deletions lib/slack-ruby-bot-server/api/helpers/error_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading