Skip to content

Ruby 3 support? #2142

@pbstriker38

Description

@pbstriker38

When setting up a simple server with ruby 3.0.0-rc1 I get the following error:

ArgumentError: wrong number of arguments (given 2, expected 1)
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/middleware/base.rb:18:in `initialize'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/builder.rb:158:in `new'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/builder.rb:158:in `block in use'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/builder.rb:235:in `block in to_app'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/builder.rb:235:in `each'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/builder.rb:235:in `inject'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/builder.rb:235:in `to_app'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/endpoint.rb:323:in `build_stack'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/endpoint.rb:355:in `block in lazy_initialize!'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/endpoint.rb:351:in `synchronize'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/endpoint.rb:351:in `lazy_initialize!'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/endpoint.rb:224:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router/route.rb:58:in `exec'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router.rb:116:in `process_route'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router.rb:72:in `block in identity'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router.rb:91:in `transaction'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router.rb:70:in `identity'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router.rb:55:in `block in call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router.rb:132:in `with_optimization'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/router.rb:54:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/api/instance.rb:167:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/api/instance.rb:71:in `call!'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/api/instance.rb:66:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/bundler/gems/grape-0f250dc0f574/lib/grape/api.rb:68:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/lint.rb:50:in `_call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/lint.rb:38:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/show_exceptions.rb:23:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/common_logger.rb:38:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/content_length.rb:17:in `call'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/handler/webrick.rb:95:in `service'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/webrick-1.7.0/lib/webrick/httpserver.rb:140:in `service'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/webrick-1.7.0/lib/webrick/httpserver.rb:96:in `run'
  /.rbenv/versions/3.0.0-rc1/lib/ruby/gems/3.0.0/gems/webrick-1.7.0/lib/webrick/server.rb:310:in `block in start_thread'

Here is the simple app I'm using to test this

Gemfile

# frozen_string_literal: true

source 'https://rubygems.org'

git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }

gem 'rack', '~> 2.2'
gem 'grape', git: 'https://github.com/ruby-grape/grape', ref: '0f250dc'
gem 'webrick'

ruby '3.0.0'

config.ru

# frozen_string_literal: true

require 'grape'

class API < Grape::API
  prefix :api
  version 'v1'
  format :json

  desc 'Health check'
  get :health do
    status 200
    'ok'
  end
end

run API

I'm able to resolve this issue by changing this line to:

def initialize(app, options={})

and this line to:

def initialize(app, options)

I'm not sure if this is the proper fix though.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions