0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

目的

静的なページの作成および自動化テストの作成

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の特有の機能などを実装することができました。
コントローラーとメソッド名を同時に設定できるのがすごく便利だと感じたとともに
普段からコマンドを使って効率化を図りながら作業を進めていけたらと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?