心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。3.2.2章。

   


静的ページにaboutというページを追加するのですが、rails gを先にするのではなく、テストコードを書くところから始まります。いよいよTDDっぽくなってきました。実際に、あとからページ追加っていうのも開発ではおおいにあり得るので、その練習もできますね。

Aboutページのテストを追加

リスト3.14 Aboutページのテストを追加する。
spec/requests/static_pages_spec.rb

require 'spec_helper'

describe "静的ページのテスト" do

  describe "Homeページのテスト" do
    it "コンテンツに'Twili'という文字がある" do
      visit '/static_pages/home'
      expect(page).to have_content('Twili')
    end
  end

  describe "Helpページのテスト" do

    it "コンテンツに'Help'という文字がある" do
      visit '/static_pages/help'
      expect(page).to have_content('Help')
    end
  end

  describe "Aboutページのテスト" do

    it "コンテンツに'About Us'という文字がある" do 
      visit '/static_pages/about'
      expect(page).to have_content('About Us')
    end
  end
end

静的ページのテストコードが長くなってきました。後でリファクタリングするはずですが、とりあえずこのまま。
テストを実行すると、まだaboutページすらないので当然失敗します。

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
ActionController::RoutingError:
    No route matches [GET] “/static_pages/about”

2つエラーの理由をだされてしまいました。

aboutのルートを追加する

ではabouをrains gするのではなく、about用のルートを追加する。だそうです。これはチュートリアルなので、出たエラーを一つづつつぶしてみよう!っていうことですね。
まずは

No route matches [GET] “/static_pages/about”

これをつぶします。

リスト3.15 about用のルートを追加する。
config/routes.rb

Twili::Application.routes.draw do
  get "static_pages/home"
  get "static_pages/help"
  get "static_pages/about" #<=今回追加する
end

テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
AbstractController::ActionNotFound:
The action ‘about’ could not be found for StaticPagesController

相変わらず2つエラー理由ですが、2番目の理由がActionController::RoutingError: からAbstractController::ActionNotFound:に変わりました。

StaticPagesコントローラにaboutのアクションを追加する

リスト3.16 aboutアクションが追加されたStaticPagesコントローラ。
app/controllers/static_pages_controller.rb

class StaticPagesController < ApplicationController
  def home
  end

  def help
  end

  def about
  end
end

rails gすれば自動的に追加になりますがお勉強のため手修正です。
テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
ActionView::MissingTemplate:
Missing template static_pages/about, application/about with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in:
* “/Users/tomokoni/rails/Twili/app/views”

もっと長いエラーメッセージが出てしまった。MissingTemplateだそうです。当然です。viewありませんから。

aboutのviewを追加する

これもrails gすれば自動的にできますが、お勉強です!
リスト3.17 Aboutページのコード
app/views/static_pages/about.html.erb

<h1>About Us</h1>
<p>
  The <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
  is a project to make a book and screencasts to teach web development
  with <a href="http://rubyonrails.org/">Ruby on Rails</a>. This
  is the sample application for the tutorial.
</p>

RailsTutorialのままです。
テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

今度はpassしました。3 examples, 0 failures
ばんざいーい。

RailsTutorialにはありませんが、いったんここでcommitしてもよいかも。
次は「3.3少しだけ動的なページ」です。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
MacBookAirにMacAppStoreからソフトをダウンロード

MacBookAir 10日目。快調です。 WindowsからMacの移行でつま …

WordPress親テーマversion upに伴う、子テーマのバージョンアップ作業

WordPress子テーマの作り方で書いた通り、airpucciの現在のテーマは …

no image
MavericksアップデートしRuby2.0+Rails4.0.2にversion upする

何を今さら感ですが、MacはAirとMiniの2台持ちです。Airのほうを人柱と …

初めてのRuby8章 8.4特異メソッドと特異クラス

特異メソッドと特異クラス プログラムなんて、クラスの継承だけで書けてしまうのが良 …

no image
iPhoneの月請求は8円のみです。

昨年11月に、e-mobileからiPhoneにMNPしました。 ちょうど、乗り …

実機なしでRetina 3.5インチのスクリーンショットを撮る

iPhoneアプリ公開時に2種類の画像登録が必要です。 1つ目はアイコン。アプリ …

no image
あんたのrakeは新しいけど古いのが必要なんだよっ!!と怒られた

Mavericksってrubyが2.0になったんですね。 てのはおいといて、 r …

no image
iPhone充電3回分?大容量バッテリーで残念がなくなりました

iPhoneは便利なので、一日中使いっ放しの日がよくあります。iPhoneがあれ …

GitにRailsプロジェクトをpushする

HomebrewerでGitをインストールし、Rails 3.2やRails4. …

no image
accepts_nested_attributes_for

everydayRailsやっていて、 phoneモデルのテストのところで ac …