Дробовик не запускается после обновления до Ruby 3.0.1

#ruby #server #sinatra #upgrade #shotgun

Вопрос:

Я пытаюсь запустить Shotgun для приложения Sinatra после обновления до Ruby 3.0.1 и получить это:

  $ 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:

Ruby v3.0 вводит критическое изменение, касающееся ключевых слов и позиционных аргументов.

Драгоценный shotgun камень давно не обновлялся; последняя версия (0.9.2) была выпущена в сентябре 2016 года.

Глядя на драгоценный камень в github, я вижу, что существует открытая проблема, связанная именно с этой проблемой, которую вы подняли, и кто — то уже- услужливо — разветвил проект исправлением.

Если первоначальный автор не объединит это исправление и не выпустит новую версию драгоценного камня, вам потребуется использовать раздвоенную версию, такую как приведенная выше. Например, обновите свой Gemfile , чтобы сказать:

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

А потом беги bundle install .

Есть также этот открытый пиар с точно таким же исправлением, так что вы могли бы в равной степени использовать эту вилку вместо этого.


… Или, в качестве альтернативы, пока придерживайтесь руби 2.7 .

Комментарии:

1. Большое спасибо, Том, я должен был проверить проблемы с GitHub. Использование раздвоенной версии никоим образом не решает проблему, поэтому я думаю, что пока я буду придерживаться Ruby 2.7.1.