VPS上でSinatraを動かしたら手元の端末からアクセスできない

2014-09-01   treby   技術メモ  , このエントリーをはてなブックマークに追加

久々に気分が上向いているので書く。

Sendagaya.rb #87にて「Rails以外のRubyフレームワーク使ってみたい」と聞いてみたらSinatraを勧められたので触ってみたのですが、まさかのHello, Worldで詰まる、という状況になってあれやこれや調べたログ。

SinatraのREADMEに書いてあるように

require 'sinatra'

get '/' do
  'Hello world!'
end

このコードをVPS上で書いて、

% ruby public_html/sinatra.rb 
== Sinatra/1.4.5 has taken the stage on 4567 for development with backup from Thin
Thin web server (v1.6.2 codename Doc Brown)
Maximum connections set to 1024
Listening on localhost:4567, CTRL+C to stop

のようにしても外からつながらないという。ポートは外からノーガードだし何でだろうなぁと思っていたら、まさにジャストミートな解決法が

書いてある通りに

require 'sinatra'
set :environment, :production

get '/' do
  'Hello world!'
end

みたいに変えたら

% ruby public_html/sinatra.rb
== Sinatra/1.4.5 has taken the stage on 4567 for production with backup from Thin
Thin web server (v1.6.2 codename Doc Brown)
Maximum connections set to 1024
Listening on 0.0.0.0:4567, CTRL+C to stop

ちゃんと見られるようになった!

上の記事によると、

bundle exec ruby hoge.rb -e production
みたいなやり方でも動くらしい。