Ruby on Rails3 Tutorial Chapter2
Upcoming SlideShare
Loading in...5
×
 

Ruby on Rails3 Tutorial Chapter2

on

  • 2,241 views

 

Statistics

Views

Total Views
2,241
Views on SlideShare
2,067
Embed Views
174

Actions

Likes
1
Downloads
16
Comments
0

5 Embeds 174

http://d.hatena.ne.jp 144
http://sea-mountain.hatenablog.jp 22
http://a0.twimg.com 4
http://webcache.googleusercontent.com 3
http://hatena-anohito.appspot.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • この正しい HTML 構成ではないというのがよく分からなかった…

Ruby on Rails3 Tutorial Chapter2 Ruby on Rails3 Tutorial Chapter2 Presentation Transcript

  • RUBY ON RAILS 3 Tutorial を日本語訳してみた Chapter 2 2011-10-12
  • 目次
    • Chapter1 Rails 導入からデプロイ
    • Chapter2 デモアプリ (scaffold 使用 )
    • Chapter3 Web アプリケーション
    • Chapter4 Rails 風 Ruby
    • Chapter5 スタイルを追加する
    • Chapter6 User Model と View その 1
    • Chapter7 User Model と View その 2
  • 目次
    • Chapter8 ユーザ登録
    • Chapter9 ログイン・ログアウト
    • Chapter10 ユーザデータの更新・編集・追加
    • Chapter11 ミニブログ ( ツイート )
    • Chapter12 ユーザのフォロー
  • Chapter 2 A demo app
    • scaffold を使ってデモアプリを作る
    • バージョン管理は Git で
    • ※ Tutorial に書いてあるバージョン指定ではなく 3.1 で試しています
  • 2.1 Planning the Application
    • Rails のアプリ作成
    • bundle install コマンド実行
    • Tutorial では 3.0.9 ですが 3.1 でやってみます
    • ※ 3.0.9 の場合 Gemfile 修正が必要↓
    $ rails new demo_app $ cd demo_app $ bundle install
  • 2.1 Planning the Application
    • Git に commit する
    • github で作成したリポジトリに push する
    $ git init $ git add . $ git commit –m “Initial commit” $ git remote add origin git@github.com:<username>/demo_app.git $ git push origin master
  • 2.1 Planning the Application
    • 今回考えられるモデル
    users id integer name string email string microposts id integer content string user_id integer
  • 2.1 Planning the Application
    • scaffold で User 作成
    • DB の初期化
    • 起動 (rails s)
    $ rails generate scaffold User name:string email:string invoke active_record create db/migrate/20111011172415_create_users.rb create app/models/user.rb invoke test_unit          …省略… $ rake db:migrate == CreateUsers: migrating ============= -- create_table(:users) -> 0.0023s == CreateUsers: migrated (0.0024s) =================================
  • Box 2.1 Rake
    • Rake コマンドの一覧出力
      • DB に関連したコマンド (rake –T db)
      • すべて (rake –T)
    $ rake -T db … 省略… rake db:schema:load # Load a schema.rb file into the database rake db:seed # Load the seed data from db/seeds.rb rake db:structure:dump # Dump the database structure to an SQL file rake db:version # Retrieves the current schema version number $ rake –T … 省略… rake db:seed # Load the seed data from db/seeds.rb rake assets:clean # Remove compiled assets … 省略…
  • 2.2.1 A User Tour
    • http://localhost:3000 にアクセス
      • Rails の index ページが見える
      • config/routes.rb には
      • resources :users が追加されている
    URL Action 説明 /users index 全ユーザ表示 /users/1 show ユーザ id が 1 のユーザ表示 /users/new new 新しいユーザを作るページ /users/1/edit edit ユーザ id が 1 のユーザの編集ページ
  • 2.2.2 MVC in Action
    • MVC モデルで /users が表示されるまで
      • ブラウザから /users にリクエスト
      • このルーティングの場合、 /users は User コントローラの index アクション
      • index アクションは User モデルに全ユーザ取得 (User.all) のリクエストを送る
      • User モデルが DB からすべてのユーザを取り出す
  • 2.2.2 MVC in Action
      • 5. User モデルがコントローラにすべてのユーザの list を返す
      • 6. コントローラが @users に list を格納して、 index ビューに送る
      • 7. ビューがユーザ一覧表示のため、 Ruby を埋込みで利用している
      • 8. コントローラが作成された HTML をブラウザに返す
  • 2.2.2 MVC in Action
    • @ から始まる変数は、 instance variables と呼ばれる
    • 自動的に view で利用出来る変数になる
  • 2.2.3 Weaknesses of This Users Recource
    • データのバリデーションをチェックしていない
      • name の入力がない・不正なメールアドレスでも処理してしまう
    • 認証がない
      • 他のユーザの登録情報が見えている
    • テストがない
      • scaffold はテストを内部に持っている
      • 自動生成されたテストは、汚く・柔軟性が無い
      • バリデーション・認証等、他に必要な機能のテストが無い
  • 2.2.3 Weaknesses of This Users Recource
    • レイアウトがない
      • サイトにあった CSS スタイルやナビゲーションがない
    • 実際的な理解がない
      • scaffold のコードは自動生成の為、勉強にならない
  • 2.3 The Microposts Resource
    • User 同様、 Micropost を作成する
    $ rails generate scaffold Micropost content:string user_id:integer $ rake db:migrate
  • 2.3 The Microposts Resource HTTP request URL Action 詳細 GET /microposts index すべての post 表示ページ GET /microposts/1 show id が1の post を表示するページ GET /microposts/new new 新しい post 作成するページ POST /microposts create 新しい post 作成 GET /microposts/1/edit edit id が 1 の post を編集するページ PUT /microposts/1 update id が 1 の post を更新する DELETE /microposts/1 destroy id が 1 の post を削除する
  • 2.3 The Microposts Resource
    • app/models/micropost.rb にバリデーション追加
    class   Micropost  <  ActiveRecord :: Base validates   :content ,  :length  => {  :maximum  =>  140 } end
  • 2.3 The Microposts Resource
    • “ the default Rails error messages are not valid HTML”
      • 正しい HTML 構成ではないらしい…?
  • 2.3.3 A User has_many Microposts
    • 1 対多の関係
    • app/models/user.rb と micropost.rb に追加
      • has_many と belongs_to
    class   Micropost  <  ActiveRecord :: Base belongs_to   :user validates   :content ,  :length  => {  :maximum  =>  140 } end class   User  <  ActiveRecord :: Base has_many   :microposts end
  • 2.3.3 A User has_many Microposts
  • 2.3.5 Deploying the Demo App
    • Microposts が完成したので、一度 push しておく
    • Heroku にデプロイ
    $ git add . $ git commit –a –m “Done with the demo app” $ git push $ heroku create $ git push heroku master $ heroku rake db:migrate
  • 2.3.5 Deploying the Demo App
    • Heroku にデプロイがうまくいかなかったとき
    • Listen 1.8 で挙げたようになっているか Gemfile 確認
    • DB に migration をかけてみる
    $ [ sudo ] gem install taps $ heroku db:push
  • 2.4 Conclusion
    • 利点
      • Rails の概要をよく知ることが出来る
      • MVC モデルの導入になる
      • REST について学べる
      • データモデリングを始めることが出来る
      • DB を使った動的サービスが作れる
  • 2.4 Conclusion
    • 欠点
      • レイアウトやスタイルがない
      • Home や About のような静的ページがない
      • ユーザ情報がない
        • パスワード
        • 画像
      • 登録がない
      • セキュリティーがない
      • 自動的に user と micropost が関連されていない
      • フォローとフォロワーの関係がない
      • test~driven development ではない
      • 実際的な理解が何も無い