Rails Tutorial - 第3章 ほぼ静的なページの作成(備忘・復習用)
自分の備忘・復習用。
必要だと思った部分のみ抽出。
本章で学ぶこと
- 静的なページの作成
- 自動化テストの雰囲気
アプリ作成と開発準備
- rails new
- Gemfileの更新
- bundle install --without production
- git initコマンドでGitの初期化
- README.mdの更新
- Bitbucketにリポジトリを作成しpush
- ブランチを切る
git checkout -b 'static-pages'
コントローラを作成
rails generate controller StaticPages home help
bitbucketにpush
git add -A git commit -m 'Add a Static Pages Controller' git push -u origin static-pages
新しくAboutページとアクションを追加する
まずはテストから記述
テストを先に書くか、後に書くか
テスト駆動では、red ・ green ・ REFACTORの順で実装する
aboutに関するテストを追加する。コントローラ作成時に、テストファイルは自動で作成されているため、そのファイルにテストを追加すれば良い。
class StaticPagesControllerTest < ActionDispatch::IntegrationTest (省略) test "should get about" do get static_pages_about_url assert_response :success end end
テストを書くと当然失敗する、すなわちREDの状態となる。
この次はGREENにするためにいよいよ実装。
- route.rbにaboutを追加
- StaticPagesControllerにaboutアクションを追加
- Viewにabout.html.erbを追加
機能追加時もRed ・ Green ・ Refactorの順
aboutページとアクションの追加が完了したが、ページの内容に応じて、ページのタイトルを自ら書き換えて表示する機能を追加したい。この時も、まずテストから書く。
(1)まず、ページタイトルに関するテストを書く - RED
class StaticPagesControllerTest < ActionDispatch::IntegrationTest def setup @base_title = Ruby on Rails Tutorial Sample App end test "should get home" do get static_pages_home_url assert_response :success assert_select "title", "Home | #{@base_title}" end # 省略 - helpやaboutアクションにも同様にtitleのassertを追加 end
(2)ページタイトルを実装する - GREEN、REFACTOR
まず動くように実装(GREEN)し、その次にDRYに沿うようにリファクタリングする。リファクタリング時にテストを都度実行し、機能が正しいかどうか確認するのが肝。テストがないとリファクタリングしても、正しいかどうか確認できない。最終的に下記となる。
home.html.erb
<% provide(:title, "Home") %> <h1>Sample App</h1> <p> This is the home page for the <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a> sample application. </p>
application.html.erb
<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
テスト結果を見やすいようにminitest reportersを導入
test/test_helper.rb
ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../../config/environment', __FILE__) require 'rails/test_help' # 以下、2行を追加するだけ require "minitest/reporters" Minitest::Reporters.use!