Railsチュートリアル5章
レイアウト
途中まで書いた文がエラーにより消えてしまったので、途中から
アセットパイプラインとは
Ruby on Railsのアプリケーション内で使用したいJavaScriptやCSS、画像ファイルを「開発作業がしやすいようにファイルを分割してコーディングができるようにしつつ、最終的に一つのファイルに連結・圧縮する」仕組みです。
WebブラウザがWebページを表示するために必要なHTMLファイルの元ファイル(.erb)をapp/viewsディレクトリ内に配置します。 一方、そのHTMLを装飾するためのCSSファイルや画像ファイル、JavaScriptファイルは、app/assetsディレクトリ内に配置します。 具体的にはapp/assets/(Javascript/styleseet/images)フォルダにあるのですが アセットパイプラインは、これら複数のディレクトリやファイルに分かれたassetsディレクトリ内のファイルをひとつに連結・圧縮する機能です。
メリットは、開発者時は分割され可読性が高いコード、本番のアプリケーションで効率的になるように最適化されたアセットが自動的に生成され、読み込みの早いページができる事。
プリプロセッサエンジンとは
各アセット(Javascript/styleseet)を実行し、生のcssやjsを吐き出す。 その際どのプリプロセッサを用いるかは拡張子で判別します。 .scss(Sass) .coffee(CoffeeScript) .erb(ERb) など
フッター
下の方に表示する部分。ヘッダーの逆
いよいよ統合テストが入ってくる 以下でstyle_layoutというテンプレートを展開
$ rails generate integration_test site_layout invoke test_unit create test/integration/site_layout_test.rb
test/integration/site_layout_test.rbに統合テストが作成される。
require 'test_helper' class SiteLayoutTest < ActionDispatch::IntegrationTest test "layout links" do get root_path assert_template 'static_pages/home' assert_select "a[href=?]", root_path, count: 2 assert_select "a[href=?]", help_path assert_select "a[href=?]", about_path assert_select "a[href=?]", contact_path end end
上記のテストだと
root_pathにgetアクセス
assert_select "a[href=?]", 各URL
で、a[href=?]があるかどうかのテストになります。(?部分に直後の各URLが入る)
つまり、上記のテストはroot_pathにgetアクセスしたときに、root_path,help_path,about_path,count_pathリンクが入っているかどうかのテストということになります。
assert_select "a[href=?]", root_path, count: 2の
のcount2はroot_pathリンクが2つあるかということ。
統合テストの実行
rails test:integration
今回は レイアウトのリンクをテストする統合テストが追加されたことで、リンクに間違った変更が加えられたらすぐに気付けるようになりました。