Rails Tutorial意図せず2週目(第3章 ほぼ静的なページの作成)

背景

1周目第13章途中でどうしても問題が解消できなくなり、gitでソースコードを戻してもDBの状態が戻らない、Herokuにデプロイはできるがアプリケーションが表示されない等の問題達にぶち当たったため、意図せず2周目を開始することに。
今回は丁寧にわからない用語等あれば拾いつつ復習していこうと思います。

第3章ほぼ静的なページの作成

本章から第14章まで続けるサンプルアプリケーションの作成を開始します。
またその際の開発・実装の間にはテスト駆動開発1を行います。ここでテスト駆動開発を行うことで今後の開発人生における素振りを行うようなものなのでしっかりと個々のテストの意味を理解しつつ、進めていきました。
最終的に本章では静的なページをコマンド実行とコードの編集で作成し、次章以降では動的ページを作っていくための基礎を学びました。

以下1周目はスルーしていた概念やコマンドの意味を調べる

provide

本章ではprovideを利用してページのタイトルタグに各ページタイトルの一部を差し込みました。このprovideコマンドですが、以下のように利用しました。
provideコマンド内に入れた変数とその中身をyieldで呼び出して各静的ページに配置することができております。

[例: /sample_app/app/views/static_pages/home.html.erb]

<% provide(:title, "Home") %>
<h1>Sample App</h1>
<p>
  This is the home page for the
  <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
  sample application.
</p>

以下、Rails 公式APIリファレンス ActionView::Helpers::CaptureHelper 「provide」の説明を意訳するとこのようになります。

  • content_for2と同じですが、その内容(変数と中身)をレイアウトに直接書き込みます。
  • 複数回の利用や他のヘルパーとの連携が想定されない場合はprovideを使用してください。

【結論】

  • 今回はprovideコマンドについて調べてみた所、公式のAPIリファレンスにたどり着きました。
  • 公式リファレンスでは類似のヘルパーとしてcontent_forを提示していたが利用方法の違い、今回だと一度のみのタイトルの挿入のみ、のためprovideの利用になったことが想定できました。
  • 公式APIリファレンス、今後気になったらアクセスしてコードを眺めてみてもよいかもしれないなと思ったのでここにリンクを残しておきました。

【参考】

yield

本章では上記provideでもお見せしたようにprovide内に埋め込んだ変数をyieldで呼び出して表示していました。 そこでyieldもRailsのコマンドorヘルパーといったものかと思い調べてみました。

そうした所、yieldはRailsではなくRubyの「ブロックを呼び出す」メソッドであることがわかりました。

また、同時に読み進めているチェリー本で丸々1章分3割かれる程重要なものだということもわかりました。

現状はそこまで深く理解する必要性はあまり感じないため、ひとまず脇において以下のポイントだけを理解しておこうと思いました。

【結論】

  • yieldはRubyのメソッドであること
  • yeildはブロックを呼び出すメソッドであること
  • チェリー本で1章割かれる程度に複雑かつ難解な可能性があり、今深追いすべきでないということ

  1. Test Driven Development(TDD)のことで、テストを①わざと失敗、②簡易的に成功、③コードを修正して意図通りにするの3過程を繰り返す技法です。

  2. 同様に変数を埋め込んで利用するものですが、複数回の利用や、他の変数やヘルパーとの連携を行う場合に利用を想定されているようです。

  3. 第10章yieldとProcを理解する