超軽量 Ruby フレームワーク 『 Sinatra 』を使ってみた。
Sinatra ってなに? <ul><li>Ruby の超軽量のフレームワークです。 </li></ul><ul><li>1 モジュールだけで ( も ) 動きます。 </li></ul><ul><li>基本的には、 Rack や ERB を組...
言葉で説明するより見てもらう方が早い require  'rubygems'  require  'sinatra'  get  '/hi'  do   'Hello, world!'  end  get の部分は、 HTTP メソッドなので、...
その他、基本のご紹介 http://github.com/sinatra/sinatra/blob/master/README.jp.rdoc ソースに日本語ドキュメントが含まれてるので、興味ある方は ご参照ください。 リダイレクト redir...
インストールもすごく簡単 Gem で入れるだけです。 # gem install sinatra # gem install mongrel 起動もすごく簡単 これで WEB サーバーごと 起動します!   $  ruby hello.rb  ...
Apache + passenger(mod_rails) で動かす <ul><li>Passenger で動かすのも簡単です。 </li></ul><ul><li># gem install passenger  </li></ul><ul>...
Rails と速度比較してみた <ul><li>比較環境 </li></ul><ul><li>Apache2.2.3 + Passenger2.2.5   同一設定 </li></ul><ul><li>ApacheBench を利用 </li>...
まとめ <ul><li>長所 </li></ul><ul><li> なにもかも簡単 </li></ul><ul><li> コードがシンプル </li></ul><ul><li> そこそこ速い </li></ul><ul><li>短所 </li>...
Upcoming SlideShare
Loading in …5
×

20091119_sinatraを使ってみた

1,838 views
1,754 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,838
On SlideShare
0
From Embeds
0
Number of Embeds
72
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20091119_sinatraを使ってみた

  1. 1. 超軽量 Ruby フレームワーク 『 Sinatra 』を使ってみた。
  2. 2. Sinatra ってなに? <ul><li>Ruby の超軽量のフレームワークです。 </li></ul><ul><li>1 モジュールだけで ( も ) 動きます。 </li></ul><ul><li>基本的には、 Rack や ERB を組み込んだ Dispatcher です。 </li></ul><ul><li>開発環境構築~開発~本番環境構築 </li></ul><ul><li> 全工程がとっても簡単。 </li></ul><ul><li>Sinatra の良いところ </li></ul><ul><li>  Ruby のフレームワークと言えば Rails が圧倒的に有名ですが </li></ul><ul><li>  Rails の長所と短所を考えてみると </li></ul><ul><li>  長所: 大きめの規模の場合、開発効率が良い </li></ul><ul><li>  短所: 重量級故に実行速度が遅い。 </li></ul><ul><li>ちょっとしたものを作る時には大げさ。 </li></ul><ul><li>ということで、 Sinatra は </li></ul><ul><li>『 ちょっとしたものを作る時にはいいかも 』 </li></ul><ul><li>  そんなフレームワーク(だと思います) </li></ul>
  3. 3. 言葉で説明するより見てもらう方が早い require 'rubygems' require 'sinatra' get '/hi' do 'Hello, world!' end get の部分は、 HTTP メソッドなので、 post, put, delete などが使用できます マッチする URL には、 * や正規表現、変数が使えます。 post ‘/create/*/:id’ do id = param[ :id ] name = param[ :account ][ :name ] end じゃーん! なんだか美しい!
  4. 4. その他、基本のご紹介 http://github.com/sinatra/sinatra/blob/master/README.jp.rdoc ソースに日本語ドキュメントが含まれてるので、興味ある方は ご参照ください。 リダイレクト redirect '/', 303 ステータスコード status 404 &quot;Not found“ フィルター before do … end ヘルパー helpers do include Rack::Utils alias_method :h, :escape_html end -> <%=h hoge %> ERB( テンプレート ) の使い方 get '/' do erb :index, layout => true end ./views/index.erb ./views/layout.erb Static ファイル ./public 以下に置く ./public/css/default.css -> /css/default.css ActiveRecord (O/R マッパ ) は使いたい! require 'activerecord' Sessions enable :sessions get '/' do ssid = session[:ssid] end
  5. 5. インストールもすごく簡単 Gem で入れるだけです。 # gem install sinatra # gem install mongrel 起動もすごく簡単 これで WEB サーバーごと 起動します!   $ ruby hello.rb    Port や WEB サーバの指定   $ ruby hello.rb -p 80 -s mongrel   Webrick や Thin も、入っているなら指定可能です ソースに 2 行程足せば、 CGI 動作させることも可能です。
  6. 6. Apache + passenger(mod_rails) で動かす <ul><li>Passenger で動かすのも簡単です。 </li></ul><ul><li># gem install passenger </li></ul><ul><li># passenger-install-apache2-module </li></ul><ul><li>(最後に表示される 3 行の文字列を httpd.conf にコピペ) </li></ul><ul><li># mkdir /path/to/sinatra_root/public </li></ul><ul><li># mkdir /path/to/sinatra_root/tmp </li></ul><ul><li># vi config.ru </li></ul><ul><li>------------------------- </li></ul><ul><li>require ‘hello’ </li></ul><ul><li>run Sinatra::Application </li></ul><ul><li>------------------------- </li></ul><ul><li>あとは、 DocumentRoot を </li></ul><ul><li>/path/to/sinatra_root/public に変更して httpd を restart </li></ul><ul><li>Passenger で動かすメリット </li></ul><ul><li>Mongrel のように Port を消費しない(いくつも起動しなくていい) </li></ul><ul><li>tmp/restert.txt というのを一緒にアップすれば restart してくれるので </li></ul><ul><li> アップすれば OK という簡単デプロイ </li></ul><ul><li>速い(らしい) </li></ul><ul><li>アクセスがない時は自動で子プロセスが消える </li></ul><ul><li>  ->メモリ節約、再起動効果 </li></ul>
  7. 7. Rails と速度比較してみた <ul><li>比較環境 </li></ul><ul><li>Apache2.2.3 + Passenger2.2.5  同一設定 </li></ul><ul><li>ApacheBench を利用 </li></ul><ul><li>sinatra は ActiveRecord を require </li></ul><ul><li>比較内容 </li></ul><ul><li>テンプレートを使って簡単な HTML を吐くだけ </li></ul>比較結果 やっぱり速い! (よかった) () 内は ActiveRecord を require しない場合 Rails 1.2.6 Rails 2.3.4 Sinatra 0.9.4 req /sec 68 83 116 % 82% 100%( 基準 ) 140% VSZ 42M 42MB 21M (13MB) RSS 34M 25MB 18M (9MB)
  8. 8. まとめ <ul><li>長所 </li></ul><ul><li> なにもかも簡単 </li></ul><ul><li> コードがシンプル </li></ul><ul><li> そこそこ速い </li></ul><ul><li>短所 </li></ul><ul><li> 作りこむと開発効率悪そう(-> Rails の範疇) </li></ul><ul><li> 作りこむと結局遅くなりそう(-> Rails もどき化) </li></ul><ul><li>結論 </li></ul><ul><li>ちょっとしたものを作りたいときに。 </li></ul><ul><li>壁が見当たらないので、初めてのプログラミングにどうでしょう。 </li></ul>

×