【sinatra】bundle execコマンド実行時にエラー Server handler (thin,puma,reel,HTTP,webrick) not found

sinatra % bundle exec ruby app.rb

/Users/myMBP/work/FJORD/sinatra/vendor/bundle/ruby/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/myMBP/work/FJORD/sinatra/vendor/bundle/ruby/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1493:in `run!'
from /Users/myMBP/work/FJORD/sinatra/vendor/bundle/ruby/3.0.0/gems/sinatra-2.1.0/lib/sinatra/main.rb:45:in `block in '
sinatra %


上記のエラーが出ました。

stackoverflow.com


ググった記事では、まあ足りないの全部入れれば?となっています。

そんなわけにもいかないので、

www.ruby-lang.org


こちらによると、3.0から
> 以下のライブラリは標準添付ライブラリから削除されました。3.0 以降で使いたい場合は rubygems から利用してください。
sdbm
webrick
net-telnet
xmlrpc

とのこと。

なので、インストールします。

sinatra % gem install webrick

Fetching webrick-1.7.0.gem
Successfully installed webrick-1.7.0
Parsing documentation for webrick-1.7.0
Installing ri documentation for webrick-1.7.0
Done installing documentation for webrick after 0 seconds
1 gem installed


Gemfileに下記も記入。

gem 'webrick'

忘れないようにすること!

bundle install コマンドの実行。
(そうでないと番外編みたく彷徨うことになります。)

実行!

sinatra % bundle exec ruby app.rb
[2021-10-09 22:12:35] INFO WEBrick 1.7.0
[2021-10-09 22:12:35] INFO ruby 3.0.2 (2021-07-07) [x86_64-darwin20]
== Sinatra (v2.1.0) has taken the stage on 4567 for development with backup from WEBrick
[2021-10-09 22:12:35] INFO WEBrick::HTTPServer#start: pid=74232 port=4567


これで成功です。

番外編

さまよった軌跡。

sinatra % bundle exec ruby app.rb
Could not find gem 'webrick' in rubygems repository https://rubygems.org/ or installed locally.
The source does not contain any versions of 'webrick'
Run `bundle install` to install missing gems.
sinatra %


あれれ〜?

qiita.com

伊藤さんの記事から

sinatra % bundle update webrick
Could not find gem 'webrick'.

を叩くも不発。

bundle add gem webrick

あ、そういえばと上のコマンドを叩く。

Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using bundler 2.2.22
Using multi_json 1.15.0
Using ruby2_keywords 0.0.5
Using rack 2.2.3
Using mustermann 1.1.1
Fetching webrick 1.7.0
Using rack-protection 2.1.0
Using tilt 2.0.10
Fetching gem 0.0.1.alpha
Using sinatra 2.1.0
Using sinatra-contrib 2.1.0
Installing webrick 1.7.0
Installing gem 0.0.1.alpha

そしてUpdateする。

sinatra % bundle update webrick
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using bundler 2.2.22
Using gem 0.0.1.alpha
Using tilt 2.0.10
Using ruby2_keywords 0.0.5
Using rack 2.2.3
Using mustermann 1.1.1
Using multi_json 1.15.0
Using rack-protection 2.1.0
Using sinatra 2.1.0
Using sinatra-contrib 2.1.0
Bundle updated!

Gemファイルに下記が追加された。
gem "gem", "~> 0.0.1.alpha"

ただしこれは、
gem 'webrick'
と同じである。

ここでようやく、
bundle install 
で設定が反映されることに気づく。

重複した、
gem "gem", "~> 0.0.1.alpha"
は削除した。