cloud9上でsinatraを動かそうとした時、通常のままでは動かないので覚書。
発生事象
以下のコマンドラインでSinatraアプリを動かそうとしても画面が表示されない。
bundle exec ruby app.rb
app.rbはこんな感じ。
require 'sinatra' get '/' do 'Hello' end
もう少し詳細に書くと、WEBrickは正常に動いているけど、いざ指定されているアドレスにアクセスしても何も表示されていないという状況です。
解決方法
起動パラメータを修正します。
bundle exec ruby app.rb -p $PORT -o $IP
具体的には -p $PORT -o $IP
を追加。IPアドレスとポート番号を明示的に指定してあげるって感じですね。ちなみに、IPとPORTにはどんな値が設定されているかというと・・・・
yatta472:~/workspace $ echo $PORT 8080 yatta472:~/workspace $ echo $IP 0.0.0.0 yatta472:~/workspace $
だそうです。ポートとかも80番は公開できないように鳴ってたりするのか、すでに使っているのか・・・・外部のアクセスは8080にしているんですね。
終わりに
そういうことねー。通常、何もパラメータを指定しないで起動するとlocalhostとかになっているから、それとアクセス可能なアドレスのマッピングがうまくいっていなくて表示されないということね。
じゃぁcloud9上のブラウザでlocalhostでアクセスしたら問題ないことになるのかな。(汎用性がない使い方ですがww
参考記事
https://simoncurd.com/2012/11/16/running-ruby-sinatra-on-cloud-9/