アウトプットしたい

アウトプットできない人のブログです

Ruby 3.0系からSinatraを使う場合、Rack handlerのインストールが要る

Ruby 3.0.0からwebrickが標準ライブラリから外れた。 そのためSinatraを使うときは、別途Rack handlerのインストールが必要になったお話。

2.7系以下なら標準のWebrickで動きます。

www.ruby-lang.org

こんな感じでエラーになる。 メッセージの通り(thin,puma,reel,HTTP,webrick)が見つからない!となるので、別途Gemをインストールする。

% bundle exec ruby app.rb 
/Users/user/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1755:in `detect_rack_handler': Server handler (thin,puma,reel,HTTP,webrick) not found. (RuntimeError)
    from /Users/user/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1493:in `run!'
    from /Users/user/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/main.rb:45:in `block in <module:Sinatra>'

gem installでpumaなりWebrickなりをインストールすると良い。

% gem install puma

bundlerを使う場合のGemfileはこんな感じに書いて、bundle installしてやる。

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "sinatra"
gem "puma"