kouの技術的メモ

学習した内容の定着やアウトプット用に開設しました

Railsチュートリアル5章

レイアウト

途中まで書いた文がエラーにより消えてしまったので、途中から

アセットパイプラインとは

Ruby on Railsのアプリケーション内で使用したいJavaScriptCSS、画像ファイルを「開発作業がしやすいようにファイルを分割してコーディングができるようにしつつ、最終的に一つのファイルに連結・圧縮する」仕組みです。

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

今回は レイアウトのリンクをテストする統合テストが追加されたことで、リンクに間違った変更が加えられたらすぐに気付けるようになりました。