Upgrade to Grape v1.3.3
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
- Move all inherited
Grape::API
->Grape::API::Instance
- Remove use of Virtus since this has been removed from Grape.
- Extract
Rack::Response
from API error - 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. - Adapt
WorkhorseFile
with the latest changes to make custom types work with Grape and dry-types. - 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.
-
Coerce
Array[Integer]
types to arrays of integers -
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:
-
Grape::API::Instance
instead ofGrape::API
is required, unless we solve #215230. -
Grape parameters defined with
Array
types (e.g.Array[String]
,Array[Integer]
) must have acoerce_with
block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.