Skip to content
  • Stan Hu's avatar
    Upgrade to Grape v1.3.3 · 7c07471b
    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.
    
    This 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
    
    The change from Virtus to dry-types now requires all strings to be
    coerced to arrays of integers. Before this was done within Virtus.
    
    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.
    
    Closes https://gitlab.com/gitlab-org/gitlab/-/issues/195960
    7c07471b