【16日目】【1日20分のRailsチュートリアル】第3章のまとめ~演習の1.
今日は「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ページが表示されました。
3.5 最後に
staticなページ周りはこれにて終了。
最後にここまでの変更をコミットしておく。
(もっとこまめにコミットした方が良かったけど忘れてた&めんどくさかった)
$ git add -A
$ git commit -m "Finish static pages"
masterブランチにマージ。
$ git checkout master $ git merge static-pages
リモートリポジトリ(BitBucket)にpush。
$ git push
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
- 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関数と文字列内の変数埋め込みは下記ページを参考にしました。
(チュートリアルの今後の章にも書いてるっぽいけど)
今日の作業時間は【30分】。 もうすぐ第3章終わります。
次は「3.6 演習 2.」から。