目的
静的なページの作成および自動化テストの作成
3-2 静的ページの生成
この章ではコマンドでのコントローラー作成方法について学びました。
・コントローラーの作成
コントローラーとアクションをまとめて指定することができ、コマンドラインでHomeページとHelpページ用のアクションもまとめて生成している
$ rails generate controller StaticPages home help
・変更の破棄
rails generateで作成したものを元に戻せる
$ rails destroy controller StaticPages home help
・作成したメソッドはルーターへ追加する
Rails.application.routes.draw do
get "static_pages/home"
get "static_pages/help"
root "application#hello"
end
3-3 テストから始める
この章ではテストの作成方法とテストの必要性について学びました。
・なぜテストが必要か
変更を行う際には、常に「自動化テスト」を作成して、機能が正しく実装されたことを確認する習慣をつける方が良い。
テストが揃っていれば、バグを追うために余分な時間を使わずに済むため
開発速度がアップできる。
上記のような考えをテスト駆動開発と呼ぶ。
テスト駆動開発(TDD)
「失敗するテストを最初に書く」
「次にアプリケーションのコードを書いて成功させる(パスさせる)」
「必要ならリファクタリングする」のように進む。
・StaticPagesコントローラのデフォルトのテスト
require "test_helper"
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
test "should get home" do
get static_pages_home_url
assert_response :success
end
test "should get help" do
get static_pages_help_url
assert_response :success
end
end
テストクラスではアサーションで正常に動作していることを確認する
3-4 少しだけ動的なページ
この章では、動的なページを作成する技法を学びました。
・やること
ページの内容に応じて、ページのタイトルを自ら書き換えて表示するようにする。
・タイトル変更方法
ビューで「ERB」(埋め込みRuby: Embedded Ruby)を使用して
ページごとにタイトルを設定する。
<% provide(:title, "Home") %>で
<%= yield(:title) %> にHomeを設定する
<% provide(:title, "Home") %>
<!DOCTYPE html>
<html>
<head>
<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
</head>
<body>
<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>
</body>
</html>
・重複の排除
Home,help,aboutではbodyのコンテンツが同じため
HTMLの使い回しができる
HTMLのテンプレート
<html>
<head>
<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta charset="utf-8">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
</head>
<body>
<%= yield %>
</body>
</html>
・<%= yield %>
各ページの内容をレイアウトに挿入できる。
/static_pages/homeにアクセスするとhome.html.erbの内容がHTMLに変換され、<%= yield %>の位置に挿入される
・HTMLを省いたhome
これが上のyieldに挿入される
テンプレートのtitleにhome、bodyにporovide以下の内容が挿入される
<% 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>
3-6高度なセットアップ
・minitest reporters
テスト結果の出力を見やすくフォーマットしてくれる。
テスト結果が色付きで表示されて見やすくなる
・Guard
テスト対象のファイルが変更されるとテストが自動で実行されるようになる機能
感想
3章ではrailsの特有の機能などを実装することができました。
コントローラーとメソッド名を同時に設定できるのがすごく便利だと感じたとともに
普段からコマンドを使って効率化を図りながら作業を進めていけたらと思いました。