どうも!chuckです。3章の学習を終えましたので記録。
3章 ほぼ静的なページの作成
「ほぼ」っていうのがユルくていいですねw
ここでの静的ページというのは「アクションとビューのみを持つページ」とのこと。
自動生成されたファイルのうち、
コントローラーはapp/controller、
ビューはapp/view
に格納されている。
コントローラは以下のように作る。
$rails generate controller StaticPages home help --no-test-framework
出た!generateコマンド。要は便利なスクリプトって感じらしい。。
ここではStaticPagesというコントローラを作成しており、その中にhomeとhelpが含まれている。
--no-test-frameworkは自動(RSpec)ではなく手動でテストを作成することを指定。
登場した用語
ルーティング(config/route.rb)
Railsはrouteファイルに記述されている内容に従って、複数のURLとWebページを関連付ける(そうなんだ!)
ちなみにconfigファイル自体はRailsの設定に関することファイルが格納される。
get "static_pages/home" がhomeアクションとhomeページを関連付けているらしい。
この記述のお陰でstatic_pages/homeにアクセスするとそのページが表示される。
コントローラ(app/controllers/static_pages_controller.rb)
空っぽに見えるけど、継承によってアクションに記述されているコードを実行する。その後、アクションに対応するビューが表示される。
ビュー(app/view/static_pages_controller.rb)
こちらがビュー。今はただのプレースホルダー。
テストをする
TDD=テスト駆動開発。さらに具体的にBDD=振舞駆動開発もある。
テストは単体テストと結合テストがある。この章では結合テストをやる。
Capybara
テスト駆動開発ではまず失敗するテストを書く。そして正しいコードを実行して成功することを確認する。
$rails generate integration_test static_pages
とすることでspec/requestsディレクトリにstatic_pages_spec.rbが生成される。このファイルにテストを行うコードを記述する。
ここではstatic_pages/homeに”Sample App”という文字列が含まれているかテストしている。
visitがそのページへのアクセスをシミュレーションする。
expect(pages).to have_content("Sample App")
はPagesはCapybaraの変数。
ただし、Capybaraの独自使用(DSL)をRailsで使えるようにするためには以下の記述を追記する必要がある。
テストを実行するには以下のコマンドを実行する。
$ bundle exec rspec spec/requests/static_pages_spec.rb
もちろん、現段階ではテストは失敗する。
テストにパスするためにはビューを書き換える。
こうすることでビューに”Sample App”という文字列が含まれ、テストをパスする。
静的ページの構成要素
1,ルートに登録する(config/routes.rb)
2,アクションを追加する(app/controllers/static_pages_contoller.rb)
3,ビューを作成する(app/view/アプリ名/Htmlファイル名)
少しだけ動的なページ
埋め込みRuby
拡張子は.erb
<% provide(:title, 'Home')%>
provide関数を用いて:titleに'Home'を関連付けている。
<%= yield(:title)%>
中のコードが実行されて結果が出力される。
レイアウトファイル(application.html.erb)
共通の構造をまとめることができる。
これによって、HTMLファイルはシンプル化できる。