[Ruby] sinatraがポート4567を指定しても繋がらない
ちょっとはまったのでメモに・・・
Sinatra: README (Japanese)
このsinatraの日本語サイト通りに
gem install sinatraして、
gem install thinして、
myapp.rbを作って、
# myapp.rb require 'sinatra' get '/' do 'Hello world!' end
起動して、
$ ruby myapp.rb == Sinatra (v1.4.6) has taken the stage on 4567 for development with backup from Thin Thin web server (v1.6.3 codename Protein Powder) Maximum connections set to 1024 Listening on localhost:4567, CTRL+C to stop
よっしゃ楽勝だぜって思ってブラウザからアクセスしても繋がらない・・・
iptable全開放とか、VMのネットワークとか確認しても繋がらない、、でもApacheのrootにはアクセスできる。
ぐぐってみたら、いつからのversionか、開発環境だと書いてある通りに厳密に「localhost:4567」じゃないと繋がらないとのこと。(IPアドレスじゃだめ)
ちなみに私の場合はそれでも繋がらなかったのだが、以下で繋がるようになりました。
解決方法
解決法1 : production 環境だと明示する(オプションで)
$ ruby myapp.rb -e production . . Listening on 0.0.0.0:4567, CTRL+C to stop
解決法2 : IPアドレスを明示してもいいらしいです(オプションで)
$ ruby myapp.rb -o 192.168.33.11 . . Listening on 192.168.33.11:4567, CTRL+C to stop
解決法3 : production 環境だと明示する(コードの中で)
# myapp.rb require 'sinatra' set :environment, :production # <== これ!! get '/' do 'Hello world!' end
コードに書いておくのが一番簡単かもしれませんね。