#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.