Rubyのフレームワーク「Sinatra」をcoreserverで使ってみた(設置編)

最近お邪魔しているFLOSS桜山で、主催者である河合先生が、「注目しているRubyのフレームワークはSinatra」とか言ってて、まあ、そうなのかで終わるところだったんだけど、その理由を聞いて俄然興味を持った。
それが

「僕、簡単なのが好きなんだよねぇ」

はいはい、僕も大好物ですよ、簡単なの。

ということで
「たくさんのこと覚えるの苦手」
「ちゃっちゃと作りたい」
「出来れば軽いのが最高」

な人に最適なフレームワークSinatraのサイトがこちら。

Sinatra
Sinatra

もう雰囲気がフレームワークって感じじゃないのが気に入った!
でらクール!!

で、トップページみたら、飛び込んできたサンプルコードががこれ。
# myapp.rb
require 'rubygems'
require 'sinatra'

get '/' do
  'Hello world!'
end

良いねえ、お手軽な雰囲気がプンプンするではないか。


で、早速動かそうとしたらはまりました。
ローカルで動かすなら、公式サイトのドキュメントに載ってるんだけど、CGIとして動かす方法が載っていない。

あ~でら不親切!
Rubyのフレームワークってみんなこんな感じなんだよね、ドキュメント。
Rubyistはみんなお金持ちってこと?
Coreserverみたいな激安レンタルサーバは使わないのかしら。

そこでなんとか見つけ出したのがこちらのサイト。
Sinatra を CGI スクリプトとして実行する - ursmの日記

助かりました、ホント。
ほとんど情報無いわ、フレームワークもシンプルなら、公式サイトのドキュメントもシンプルだわ、Rackもいまいちわからんわって状態だったので。

けど、これだけじゃイメージ通りに動きません。
参考サイトの通りに設定すると
get '/hello' do
  'Hello world!'
end


http://hogehoge.com/hoge.rb/hello

こんな感じでアクセスできた。

でも、そうじゃなくて
http://hogehoge.com/hello

といきたいわけです。

ということで、約1日かけてたどり着いたのがこちら。

#.htaccess

DirectoryIndex index.html index.php start.rb

AddHandler cgi-script .rb
Options +ExecCGI

SetEnv RUBYLIB /virtual/account/lib/site_ruby/1.8:/virtual/account/lib
SetEnv GEM_HOME /virtual/account/lib/ruby/gem

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*) start.rb/$1 [L]

もっとちゃんと書き方あるかと思いますが、まあ、これをみて察してください。

で、実際のアプリのコードはこんな感じ。
#/start.rb

require 'rubygems'
require 'sinatra'

set :run, false                #HTTPサーバ立ち上げないならfalse
set :environment, :production

get '' do                      #'/'だと駄目くさい
  'Hello world!'
end

Rack::Handler::CGI.run Sinatra::Application


こんな感じで
http://hogehoge.com/

でHello Worldが出ます。
泣ける。

これでやっと、Sinatraワールドが楽しめます。

長くなったので、今回はここまで。
余力があれば、DB周りやView周りのことも書きたいです。

※htaccessのSetEnvの箇所は大橋さんの記事を参考にさせていただきました(それまではstart.rbに直書きでした)。
htaccessに記述した方が何かとスマートかなと思います。
ありがとうございました。
Sinatra、結構いいかも | コンピューターと人の触媒になるのを目指して

Comments Form

Name:
URL:
E-Mail:
Comment:

profile

moto

名古屋でもっぱらウェブ系の雑用をこなしてます。

recent comments

archives

tags

friends

products

advertisement

contact

longkey1[at]gmail[dot]com