/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

Cloud9上でSinatraアプリを動かす

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/

Cloud9上でのRubyで作成したWebアプリがローカルで動作しない