更新到 Ruby 3.0.1 后 Shotgun 无法启动
Shotgun doesn't start after updating to Ruby 3.0.1
升级到 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)
这是怎么回事?谢谢!
Ruby v3.0 引入了一个 重大变更,与关键字和位置参数有关。
shotgun
gem好久没更新了;最新版本 (0.9.2) 于 2016 年 9 月发布。
查看 github 中的 gem,我看到有一个 open issue about this exact problem you've raised, and someone has already - helpfully - forked the project with a fix。
除非原作者合并此修复程序并发布 gem 的新版本,否则您将需要使用上述的分叉版本。例如,将您的 Gemfile
更新为:
gem 'shotgun', git: 'https://github.com/delonnewman/shotgun.git'
然后 运行 bundle install
.
还有 this open PR 具有完全相同的修复,因此您同样可以使用该分支。
... 或者,暂时坚持 ruby 2.7
。
升级到 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)
这是怎么回事?谢谢!
Ruby v3.0 引入了一个 重大变更,与关键字和位置参数有关。
shotgun
gem好久没更新了;最新版本 (0.9.2) 于 2016 年 9 月发布。
查看 github 中的 gem,我看到有一个 open issue about this exact problem you've raised, and someone has already - helpfully - forked the project with a fix。
除非原作者合并此修复程序并发布 gem 的新版本,否则您将需要使用上述的分叉版本。例如,将您的 Gemfile
更新为:
gem 'shotgun', git: 'https://github.com/delonnewman/shotgun.git'
然后 运行 bundle install
.
还有 this open PR 具有完全相同的修复,因此您同样可以使用该分支。
... 或者,暂时坚持 ruby 2.7
。