今日は朝練の日
だがしかし二度寝orz
子供が病院に連れていかれた契機で続きに着手。
前回作成した controller なコマンドの痕跡が以下らしい。
$ rails generate controller Pages home contact create app/controllers/pages_controller.rb route get "pages/contact" route get "pages/home" invoke erb create app/views/pages create app/views/pages/home.html.erb create app/views/pages/contact.html.erb invoke rspec create spec/controllers/pages_controller_spec.rb create spec/views/pages create spec/views/pages/home.html.erb_spec.rb create spec/views/pages/contact.html.erb_spec.rb invoke helper create app/helpers/pages_helper.rb invoke rspec create spec/helpers/pages_helper_spec.rb $
branch してる模様。そもそもディレクトリは何処だ、というあたりから確認しないといけないあたりが超微妙。
ディレクトリを探しだして確認。
$ git branch master * static-pages $
branch してますな。で、テキストによれば spec/views と spec/helpers は削除しなさい、とあります。
$ git rm -r spec/views $ git rm -r spec/helpers
実行して以下を kickoff します。あ、まだ git add してないから削除のみで良かった模様。
$ rm -rf spec/views $ rm -rf spec/helpers
で、以下。
$ bundle exec rspec spec/ .. Finished in 0.59979 seconds 2 examples, 0 failures $
green というヤツですな。わははは的。
この時点で試験に失敗する場合の対処に関する記述もありますがスルー。autotest 云々もスルー。次に出てくるのが Spork というものなのですが、autotest と組合せて云々って言ってるのでこれもスルーだな。最近は完全に開発環境が OSX 前提ってあたりがなんとなく困ります。
次
_Now let’s get to the Red part of the Red-Green cycle by writing a failing test for the about page._とのこと。
require 'spec_helper' describe PagesController do render_views describe "GET 'home'" do it "should be successful" do get 'home' response.should be_success end end describe "GET 'contact'" do it "should be successful" do get 'contact' response.should be_success end end describe "GET 'about'" do it "should be successful" do get 'about' response.should be_success end end end
"GET 'about" が追加になってますね。で試験を動かしてみます。
$ rspec spec/ ..F Failures: 1) PagesController GET 'about' should be successful Failure/Error: get 'about' ActionController::RoutingError: No route matches {:controller=>"pages", :action=>"about"} # ./spec/controllers/pages_controller_spec.rb:21:in `block (3 levels) in <top (required)>' Finished in 1.47 seconds 3 examples, 1 failure Failed examples: rspec ./spec/controllers/pages_controller_spec.rb:20 # PagesController GET 'about' should be successful $
えらく懇切丁寧な出力ですな。確かに試験を追加しただけなので route も controller もある訳は無いわけで。
テキストでは controller を以下に
class PagesController < ApplicationController def home end def contact end def about end end
config/routes.rb を以下に、とあります。
SampleApp::Application.routes.draw do get "pages/home" get "pages/contact" get "pages/about" . . . end
盛り込んで試験実行。
$ rspec spec/ ..F Failures: 1) PagesController GET 'about' should be successful Failure/Error: get 'about' ActionView::MissingTemplate: Missing template pages/about with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "#<RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0x00000003aaead0>" # ./spec/controllers/pages_controller_spec.rb:21:in `block (3 levels) in <top (required)>' Finished in 0.32763 seconds 3 examples, 1 failure Failed examples: rspec ./spec/controllers/pages_controller_spec.rb:20 # PagesController GET 'about' should be successful $
げ。app/views/pages/about.html.erb も追加が必要らしい。以下。
<h1>Pages#about</h1> <p>Find me in app/views/pages/about.html.erb</p>
で、再度試験実行。
$ rspec spec/ ... Finished in 0.25525 seconds 3 examples, 0 failures $
green ッスね。わははは。
次は refactor ということなのですが、スルー。別途で次の_Slightly dynamic pages_の項も読んでログ出力するかもしれませんが、子供が病院から戻ってきたので出掛けるかも。