2012-02-07

sinatraをpassengerで使う

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyで簡単なwebプログラムを組みたいなぁ、Rails使うほどの規模でもないなぁというときは軽量フレームワークのSinatraがステキです。

Sinatraの詳しい使い方は、以下を見ればOKです。
http://www.sinatrarb.com/intro-jp.html

本当に簡単に試すならばファイルがひとつあればいいお手軽さなのですが、
Sinatraで作ったものをPassengerを使って公開するときには、ちょっと準備が必要です。
具体的には、以下が参考になります。SubURIで動かしています。
http://d.hatena.ne.jp/seiunsky/20090614/1244978847

Sinatraアプリとしては、以下のファイルとディレクトリが必要になります。

+public(空ディレクトリ)
+tmp(空ディレクトリ)
+app.rb(アプリ本体 たとえばこういうやつ)
+config.ru(おまじないファイル。こんな感じ)

これだけでOKです。
sinatra_appというSubURLで公開するならば
publicディレクトリをhtdocs/sinatra_appにリンクを張って
Passengerの設定で
RackBaseURI /sinatra_app
と書けばOKです。

これでとりあえずOKなのですが、さくっと作ったプログラムだとなんで作ったのかとか忘れがちなのでドキュメント用のディレクトリも使いした方がよいかなぁとか思います。
そしてさくっと作ってもrspecでテストをしておいた方がよいよなぁと思うわけなので、上記にさらにいくつか追加して以下のような感じにします。


+doc(ドキュメント格納用ディレクトリ)
+public
+spec
| |-app_spec.rb(テストファイル)
| |-spec.opts(rspecのオプション情報)
| |-spec_helper.rb(テスト用helper)
+tmp
+README(ざっくり説明用。これだけあればよいときも多いと思います)
+Rakefile(rake specとやるために準備)
+app.rb
+config.ru

sinatraでrspecを使うためには、以下が参考になります。
http://d.hatena.ne.jp/amacou/20100221/1266768409
http://labs.unoh.net/2009/07/bdd_on_sinatra.html

こちらを元に以下のファイルを作成してみました。


+spec
| |-app_spec.rb
| |-spec.opts
| |-spec_helper.rb
+Rakefile

ということで、これらのサンプルをとりあえず
https://github.com/vivahiraj/sinatra_template
に置いてみました。








追記(2013/10/24)
bundlerを利用したテンプレートも作成してみました。
sinatraでbundlerを使う
コメントを投稿