Upgrade to Pro — share decks privately, control downloads, hide ads and more …

shibuya-rb-20120215-ramaze-sequel

Kensuke Nagae
February 15, 2012

 shibuya-rb-20120215-ramaze-sequel

Kensuke Nagae

February 15, 2012
Tweet

More Decks by Kensuke Nagae

Other Decks in Programming

Transcript

  1. Ramaze と Sequel 使ってみた • Ramaze はマイクロフレームワーク (Sinatra 的なもの) •

    Sequel は O/R マッパ (ActiveRecord 的なもの) • 両方初めて -> 簡単に使えた -> せっかくなので発表
  2. Ramaze • ラマゼ? • WAF • 主要な日本語の情報源 ◦ ramaze-users ◦

    Ruby Freaks Lounge 第11回 自由なWebフレームワーク, Ramaze ◦ Ruby Freaks Lounge 第12回 Ramazeを使って120行で作る 単語帳アプリ ▪ 全て yhara さんの仕事 (すごい)
  3. Ramaze のコードの例 require 'ramaze' class Blog < Ramaze::Controller map '/blog'

    # GET /blog def index 'Hello, this is my Ramaze blog' end end Ramaze.start
  4. Ramaze の特徴 • いいところ ◦ DSL じゃない (Ruby のクラスそのもの) ◦

    覚えることが少ない • 悪いところ ◦ Ruby を知らないときつい (デザイナさんとか)
  5. Views • 好きな • テンプレートエンジンを (ry • layout 使えます •

    Controller から render_* でレンダリング • 変数の参照はインスタンス変数 @user とかで (Rails と同じ) • view/*.erb とかに置くのが流儀 ◦ map で階層増えたらそのぶんディレクトリを掘る
  6. Configuration • Ramaze::Traited ◦ 外からアクセスできるクラス変数 @@val ◦ 継承で上書きされない == クラスごとに固有の値

    ◦ 設定値をもたせたりとか ▪ 定数でよいのでは... • Ramaze::Optioned ◦ グローバル変数的な存在 ◦ registrar とか context とかみたいな? ◦ 設定値をもたせたりとか ▪ グローバル変数でよいのでは... ◦ 入れたり出したりが面倒くさい
  7. Ramaze まとめ • 覚えることが少ない • 把握しやすい • Sinatra を Modular

    スタイルに書きなおすくらいなら最初から採 用してもいいのでは
  8. Sequel • シークェル? • O/R マッパ • 主要な日本語の情報源 ◦ http://d.hatena.ne.jp/yshgt/20080629/1214720897

    ▪ ここみれば以降のスライドみなくていいです ◦ Ruby Freaks Lounge 第9回 SinatraとSequel・Hamlで掲示板 アプリを作る ▪ これも yhara さん (すごい)
  9. Sequel のコードの例 # データベースに接続 DB = Sequel.connect('sqlite://development.db') # CREATE DB[:users]

    << {:name => 'Kensuke Nagae'} # SELECT @user = DB[:users].filter( :name => 'Kensuke Nagae' ).first # UPDATE DB[:users].filter( :name => 'Kensuke Nagae' ).update(:name => 'kyanny')
  10. Sequel の特徴 • dataset がとてもお手軽 • dataset がとてもお手軽 ◦ ホントにお手軽なので二回いいました

    • Model クラスも作れる ◦ ActiveRecord でよいのでは... • Migration もある ◦ でも Rake タスクは自前で用意する... • Heroku Friendly (postgres:// みたいな URL を直接食わせら れる)
  11. dataset とはなにか • Dataset Basics ◦ Datasets are probably the

    thing that separate Sequel from other database libraries. ◦ 「SQL クエリ」または「行セット」を表現したもの ◦ 行セットとは、データの列を含む行の集まりです。 ◦ SQL といえば集合指向 ◦ dataset は集合を集合のまま扱う仕組み ▪ SQL クエリとの剥離が少ないので直感的
  12. The Sequel Console • irb コンソール起動 • DB という定数にデータベースオブジェクトが入る ◦

    sqlite(1) とかでよいのでは... • マイグレーション実行 (-m) ◦ 便利、だが反面 Rake タスクがない...
  13. Migrations • sequel -m path/to/migrations postgres://host/database • rake タスクは自分で用意する... ◦

    http://steamcode.blogspot.com/2010/09/sequel-and- heroku.html ◦ 自分で用意しなくてよかった ◦ ほかにも探せばけっこうあります
  14. Sequel for ActiveRecord Users • ActiveRecord っぽい Model が欲しい方に •

    けっこう多機能 (association, validation, callback, etc.) ◦ ActiveRecord でよいのでは... ◦ dataset スタイルとコードが違いすぎる ◦ Sinatra の Classic Style と Modular Style に似ている ◦ 最初から AR っぽく書くなら AR を選べばいい ◦ 途中から変えるくらいなら最初から AR で書けばいい ◦ 「大きく育てる気がないコード」用と割り切る
  15. Sequel まとめ • プロトタイピングのお供に最適 ◦ せっかく WAF はミニマルなのに DB 使うととたんにヘヴィに

    なるのはだるい • dataset は小さいコード向き、と割り切る • Model を使うくらいなら他の O/R マッパでいいんじゃない?