Ruby on Rails チュートリアル 第3章 まとめ

目次

  • 3.1 セットアップ
  • 3.2 静的ページ
  • 3.3 テストから始める
  • 3.4 少しだけ動的なページ
  • 3.5 最後に
  • 3.6 高度なセットアップ
  • 3.X 感想とか

3.1 セットアップ

3.2 静的ページ

  • ブランチの作成
    git checkout -b static-pages

  • controllerの作成
    rails generate controller StaticPages home help
      controller名はキャメルケース!

  • 作成されたものの確認

3.3 テストから始める

  • 自動生成されたテストの実行!(green)
    rails test / rails t
    (テストファイルの static_pages_home_url とルーターの'static_pages/home'が紐づいている(?)のが気持ち悪い)

  • 自動生成されたテストの追加(aboutページの追加)(red)
    当然失敗
    →ルートを追加
    →でも失敗
    →controllerにアクションを追加
    →また失敗
    →viewを追加
    →成功!!

3.4 少しだけ動的なページ

  • 勉強用にapplication.html.erbを移動
  • タイトルのテスト追加(red)
    各ページに普通のHTML記載
  • テストのリファクタリング(red)
    共通部分をsetupメソッドに統一
      DRYの原則!
  • 各ページの統一
    共通部分をまとめるための下準備
      <% provide(:title, "Home") %>
      <%= yield(:title) %>
     テストで確認

  • application.html.erbをもとの位置に戻す!
    レイアウトファイル(application.html.erb)の編集
    各ページの編集 DRYに!
      テストで確認

  • ルートページの変更
    ルートページのテスト追加!

3.5 最後に

  • gitにコミットとか

3.6 高度なセットアップ

  • テスト結果の見栄えをよく
    test_helper.rbに以下追加
      require "minitest/reporters"
      Minitest::Reporters.use!
  • 自動テスト
    Guardを使った
    • Guard初期化
        bundle exec guard init
    • tmuxのインストール(Guardの通知を有効にするため)
      実はテスト実行の時点でエラーが発生していて、ググったらインストールが必要とのことでもうやってた。
        sudo yum install -y tmux
    • Guardfileのカスタマイズ
        guard :minitest, spring: "bin/rails test", all_on_start: false do

    • SpringとGitの競合を防ぐために.gitignoreファイルにspring/を追加

    • 自動テスト開始!!
        bundle exec guard

    Guardfileの中は監視対象と対するテストを書いてある感じ。
    監視対象とテストは正規表現で書いてあったりしてファイル名をそろえとくといい感じだった。
    まあ普通そろえるか。

3.X 感想とか

テストいいね!安心感が違うな。 どうなっていて欲しいかを一回書けば、覚えておかなくていいのはすごい楽。