【问题标题】:Shotgun doesn't start after updating to Ruby 3.0.1更新到 Ruby 3.0.1 后 Shotgun 无法启动
【发布时间】:2021-05-10 09:46:13
【问题描述】:

在升级到 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 server sinatra upgrade shotgun


    【解决方案1】:

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

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

    查看 github 中的 gem,我看到有一个 open issue 关于您提出的这个确切问题,并且有人已经 - 有帮助 - 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。

    【讨论】:

    • 非常感谢汤姆,我应该检查一下 GitHub 问题。使用分叉版本并不能以任何方式解决问题,所以我想我现在会坚持使用 Ruby 2.7.1。
    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 2017-11-14
    • 2011-06-23
    • 2020-08-17
    • 1970-01-01
    • 2020-01-12
    • 2021-03-11
    相关资源
    最近更新 更多