Skip to content
  • Stan Hu's avatar
    Upgrade to Grape v1.3.3 · 3a0c6dd9
    Stan Hu authored
    This brings back many of the changes in
    https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. 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.
    
    7. Coerce `Array[Integer]` types to arrays of integers
    
    8. 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 https://gitlab.com/gitlab-org/gitlab/-/issues/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.
    3a0c6dd9