Skip to content

Upgrade to Grape v1.3.3

Stan Hu requested to merge sh-update-grape-1.3.3 into master

This brings back many of the changes in !27276 (merged). This was reverted due to some failures in the QA tests with nil parameters.

Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md

  1. Move all inherited Grape::API -> Grape::API::Instance
  2. Remove use of Virtus since this has been removed from Grape.
  3. Extract Rack::Response from API error
  4. Grape v1.2.3 pulled in a fix used in SafeFile: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type.
  5. Adapt WorkhorseFile with the latest changes to make custom types work with Grape and dry-types.
  6. Ensure Array[String] is coerced properly.

The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus.

  1. Coerce Array[Integer] types to arrays of integers

  2. Use a new helper, coerce_nil_params_to_array!, that coerces nil Array inputs to empty arrays to preserve previous behavior.

If you have a parameter of type Array[String], for example, Grape used to coerce a provided nil value to []. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present.

This merge request also introduces two Rubocop rules for Grape v1.3:

  1. Grape::API::Instance instead of Grape::API is required, unless we solve #215230.

  2. Grape parameters defined with Array types (e.g. Array[String], Array[Integer]) must have a coerce_with block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.

Edited by Stan Hu

Merge request reports