0

在升级到 Ruby 3.0.1 后,我正在尝试为 Sinatra 应用程序启动 Shotgun,并得到以下信息:

 $ shotgun 
== Shotgun/Thin on http://127.0.0.1:9393/
/Users/me/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/rack-2.2.3/lib/rack/handler/thin.rb:11:in `run': wrong number of arguments (given 2, expected 1) (ArgumentError)
    from /Users/me/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/shotgun-0.9.2/bin/shotgun:156:in `<top (required)>'
    from /Users/me/.rbenv/versions/3.0.1/bin/shotgun:23:in `load'
    from /Users/me/.rbenv/versions/3.0.1/bin/shotgun:23:in `<main>'

运行gem list,我得到:

shotgun (0.9.2)

这是怎么回事?谢谢!

4

1 回答 1

1

Ruby v3.0 引入了一个重大变化,与关键字与位置参数有关。

shotgungem很久没有更新了;最新版本(0.9.2)于 2016 年 9 月发布。

查看 github 中的 gem,我发现关于您提出的这个确切问题存在一个未解决的问题,并且有人已经 - 有帮助地 -分叉了该项目并修复了.

除非原始作者合并此修复并发布新版本的 gem,否则您将需要使用上述的分叉版本。例如,更新你Gemfile说:

gem 'shotgun', git: 'https://github.com/delonnewman/shotgun.git'

然后运行bundle install

还有一个具有完全相同修复的开放 PR,因此您可以同样使用该叉子。


...或者,2.7现在坚持使用 ruby​​。

于 2021-05-10T10:02:01.523 回答