ホーム > コンピューター > Sinatra、結構いいかも

Sinatra、結構いいかも

Sinatraといっても、フランク・シナトラじゃないよ。My Wayは聞きほれたけれど。

Rubyの超軽量フレームワーク Sinatra
http://www.sinatrarb.com/

FLOSS桜山でRubyについて発表させていただいたとき、河合さんから紹介してもらいました(感謝)。まったく注目していなかったんだけれどね。

Ruby on Railはとてもいいけれど、バージョンアップが早くてちょっと追いつけないでいます。それに、小さいプログラムを動かすときはちょっと重い。

xreaという安い共有サーバーでRedMineを動かすのはCGIで動かすしかないのだけれど、Webからアクセスされるたびに初期設定から始まるのでいつも数秒はかかるんだよね。それは重量級になったらしょうがないね、

じゃあちょっとだけ動かすのには、Merbはという意見はあるけれど保留。xreaのrubyは1.8.5なので、merbのインストールができなかった(涙)。

  • xreaでのrubygemsの導入
    http://diaspar.jp/node/135 を参考
    ただ、rubygem のバージョン1.3.1がうまく入らないらしい。私は1.2のまま使用
  • gem でsinatraを導入
    gem install sinatra

index.cgi

#!/usr/bin/env ruby
require 'rubygems'
require 'sinatra'

get '' do
  'Hello Sinatra!!!!'
end

set_options :run => false, :env => :cgi
Rack::Handler::CGI.run Sinatra.application

.htaccess

SetEnv RUBYLIB /virtual/アカウント/lib/site_ruby/1.8:/virtual/アカウント/lib
SetEnv GEM_HOME /virtual/アカウント/lib/ruby/gem

AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI

xreaに限らず共有サーバーに、独自でrubygemsを入れた場合は、上記のSetEnvの2行を.htaccessに設定する必要があります。

実行してみると、結構早い。

ただ、SinatraはMVCのうちCのController部分だけになる。

VつまりViewは、RailsではActionViewのrhtmlが使われるが、HAML & Ssasはどうだろうか?
http://haml.ursm.jp/
XMLに対してのyamlのように、HTMLに対してのhamlということになる。
(自分で書いていて略号が多くてわかりにくいなぁ)

MのModelは、ActionModelでも、DataMapperでも、Sequelでもいいかぁ。使ったことないけれど。

heroku.orgでもSinatraをサポートし始めたし、Google Apps Engine でもJava+ JrubyでSinatra使えそうだし、軽量アプリにはいいかも。
http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html (英語) 
http://jugyo.org/blog/3388 (日本語)

longkey1さんのブリッターは、sinatraで作られているアプリケーションとしては魁じゃない!?
http://brtr.longkey1.net/

カテゴリー: コンピューター タグ: ,