読者です 読者をやめる 読者になる 読者になる

ぞえの技術めも

Ruby on Rails勉強中

【16日目】【1日20分のRailsチュートリアル】第3章のまとめ~演習の1.

Ruby on Railsチュートリアル(第3版)

今日は「3.4.4 ルーティングの設定」から。

3.4.4 ルーティングの設定

Homeページをルートに設定しておく。

3.1でroot 'application#hello'を追加してるのでApplicationコントローラからもhelloアクションを削除する。

config/routes.rb

  root 'static_pages#home'

念のため動作確認。

$ rails server -b $IP -p $PORT

Homeページが表示されました。

f:id:kt_zoe:20160801123719p:plain

3.5 最後に

staticなページ周りはこれにて終了。
最後にここまでの変更をコミットしておく。
(もっとこまめにコミットした方が良かったけど忘れてた&めんどくさかった)

$ git add -A
$ git commit -m "Finish static pages"

masterブランチにマージ。

$ git checkout master
$ git merge static-pages

リモートリポジトリ(BitBucket)にpush。

$ git push

f:id:kt_zoe:20160801123750p:plain

Herokuにもpush。(push前にテスト実行)

$ bundle exec rake test
$ git push heroku

3.5.1 本章のまとめ

ERBは触ったことあったので、私にとってのこの章のメインはこれかな~。

テスト駆動開発では「レッド・グリーン・リファクタリング」サイクルを繰り返す。
Railsのレイアウトでは、アプリケーションのページの共通部分をテンプレートに置くことでコードの重複を解決することができる。

テスト駆動開発に慣れたい。慣れよう。

3.6 演習

演習用にstatic-pages-exercisesブランチ作成してそこで作業。

$ git checkout static-pages
$ git checkout -b static-pages-exercises
  1. StaticPagesコントローラのテスト (リスト3.22) にも重複があることにお気付きでしょうか。
    特に「Ruby on Rails Tutorial Sample App」を全てのタイトルテストでそのまま使っています。 専用のsetup関数 (テストの設定用関数、個別のテストの前に必ず毎回実行される) を使用してこの重複を解消し、
    テスト修正後もリスト3.38のテストがGREENになることを確認します (なお、リスト3.38ではインスタンス変数 (2.2.2と4.4.5) と文字列の式展開 (4.2.2) を使用しています)。

リスト3.38に答えが書いてあるけど、下記のように修正。

test/controllers/static_pages_controller_test.rb

require 'test_helper'

class StaticPagesControllerTest < ActionController::TestCase

  # 各テストが実行される直前に呼び出される
  def setup
    @base_title = "Ruby on Rails Tutorial Sample App"
  end
  :
     assert_select "title", "Home | #{@base_title}"
  :
end

テスト実行。問題なし。

$ bundle exec rake test
3 runs, 6 assertions, 0 failures, 0 errors, 0 skips

setup関数と文字列内の変数埋め込みは下記ページを参考にしました。
(チュートリアルの今後の章にも書いてるっぽいけど)

railsguides.jp

www.rubylife.jp

今日の作業時間は【30分】。 もうすぐ第3章終わります。

次は「3.6 演習 2.」から。