在升级到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)
个
怎么了?谢谢!
1条答案
按热度按时间ujv3wf0j1#
Ruby v3.0引入了一个突破性的变化,与关键字和位置参数有关。
shotgun
gem已经很久没有更新了;最新版本(0.9.2)于2016年9月发布。看看github中的gem,我看到有一个关于你提出的这个问题的open issue,有人已经-很有帮助-forked the project with a fix。
除非原作者合并此修复并发布新版本的gem,否则您需要使用如上所述的分叉版本。例如,更新您的
Gemfile
:字符串
然后运行
bundle install
。还有this open PR也有完全相同的修复,所以你同样可以使用该分叉。
.或者,现在坚持使用Ruby
2.7
。