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

shibuya-rb-20120215-ramaze-sequel

Fffd8bf62b842a46803fb07792029fa4?s=47 Kensuke Nagae
February 15, 2012

 shibuya-rb-20120215-ramaze-sequel

Fffd8bf62b842a46803fb07792029fa4?s=128

Kensuke Nagae

February 15, 2012
Tweet

Transcript

  1. Ramaze と Sequel で ウェブサービスを作ってみた 渋谷.rb[:20120215] Kensuke Nagae

  2. 謝罪

  3. s/Ramaze/Sinatra/ s/作ってみた/作ってます/

  4. でも Ramaze の話をします

  5. 長永 健介 について • 刺身☆ブーメラン, @kyanny • ペパボ、 30days Album

    • 最近猫を飼いました
  6. HBKindle 作ってます • はてブしたページを Kindle に送るサービス • はてなブックマーク WebHook を使ってます

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

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

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

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

    覚えることが少ない • 悪いところ ◦ Ruby を知らないときつい (デザイナさんとか)
  11. Ramaze Command • ひな形作成 • ウェブサーバ起動 • irb コンソール起動 •

    別に使わなくていい
  12. 覚えることが少ない? • 規約が少ない • • require は Ramaze を知らなくても読める

  13. Controllers • map '/uri' • request[:form_field_name] • これだけ知ってれば十分使えます ◦ params

    はあっても良かった • controller/*.rb に置くのが流儀
  14. Models • 好きな • O/R マッパを • 使ってください • model/*.rb

    に置くのが流儀
  15. Views • 好きな • テンプレートエンジンを (ry • layout 使えます •

    Controller から render_* でレンダリング • 変数の参照はインスタンス変数 @user とかで (Rails と同じ) • view/*.erb とかに置くのが流儀 ◦ map で階層増えたらそのぶんディレクトリを掘る
  16. Helpers • いっぱい • あるので • がんばって研究しましょう

  17. Configuration • Ramaze::Traited ◦ 外からアクセスできるクラス変数 @@val ◦ 継承で上書きされない == クラスごとに固有の値

    ◦ 設定値をもたせたりとか ▪ 定数でよいのでは... • Ramaze::Optioned ◦ グローバル変数的な存在 ◦ registrar とか context とかみたいな? ◦ 設定値をもたせたりとか ▪ グローバル変数でよいのでは... ◦ 入れたり出したりが面倒くさい
  18. Sessions • session と flash がある • Rack::Session::Cookie とか使ったほうがよさげ

  19. Ramaze まとめ • 覚えることが少ない • 把握しやすい • Sinatra を Modular

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

    ▪ ここみれば以降のスライドみなくていいです ◦ Ruby Freaks Lounge 第9回 SinatraとSequel・Hamlで掲示板 アプリを作る ▪ これも yhara さん (すごい)
  21. 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')
  22. Sequel の特徴 • dataset がとてもお手軽 • dataset がとてもお手軽 ◦ ホントにお手軽なので二回いいました

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

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

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

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

    けっこう多機能 (association, validation, callback, etc.) ◦ ActiveRecord でよいのでは... ◦ dataset スタイルとコードが違いすぎる ◦ Sinatra の Classic Style と Modular Style に似ている ◦ 最初から AR っぽく書くなら AR を選べばいい ◦ 途中から変えるくらいなら最初から AR で書けばいい ◦ 「大きく育てる気がないコード」用と割り切る
  27. 他にもいろいろあるけど 調べきれませんでした

  28. Sequel まとめ • プロトタイピングのお供に最適 ◦ せっかく WAF はミニマルなのに DB 使うととたんにヘヴィに

    なるのはだるい • dataset は小さいコード向き、と割り切る • Model を使うくらいなら他の O/R マッパでいいんじゃない?
  29. まとめ Ramaze も Sequel も使い始めに覚えなきゃいkこと・知ってないと使 えないことが少ないので、思いついたものをさっと書いて動かしてみ るのにオススメです

  30. おわり ありがとうございました