【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 %
上記のエラーが出ました。
ググった記事では、まあ足りないの全部入れれば?となっています。
そんなわけにもいかないので、
こちらによると、3.0から
> 以下のライブラリは標準添付ライブラリから削除されました。3.0 以降で使いたい場合は rubygems から利用してください。
sdbm
webrick
net-telnet
xmlrpc
とのこと。
なので、インストールします。
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 %
あれれ〜?
伊藤さんの記事から
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"
は削除した。