オレマトペ

Webエンジニアを目指し学習中のデブアラサーによるほぼ擬音ブログ

Ruby on Rails チュートリアル第3章を終えて

f:id:Npakk:20200610222322p:plain

はじめに

このエントリーでは、Railsを勉強している私がRuby on Rails チュートリアルを学習した感想などを、
各章毎に述べていきたいと思います。
このチュートリアルを学ぶ方法は動画、電子書籍など色々な媒体で提供されておりますが、
ここではWebテキスト(第6版)を使用しております。

目次

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

これまでと同じくgemファイルを編集し、必要なgemをインストール後、
GitHub・Herokuへのプッシュ・デプロイを先に実行。
前回は、scaffoldを使用して簡単にモデル・コントローラ・ビュー・ルーティングの全てを自動設定しましたが、今回から個別に作成していき、railsの概要をつかんでいくらしい。

Generateスクリプトを使用してコントローラを生成すると、config/routes.rbファイルが自動更新され、
URLにアクセスしたときに対応するアクションを呼び出す対応関係が作られる。
またこのGenerateスクリプトで自動生成されたソースは、Destoryスクリプトで元に戻せるらしく、
コントローラとモデルとマイグレーションのそれぞれで使えるらしい。
使うことはあるのかなー

コントローラー

$ rails generate controller StaticPages home help
$ rails destroy controller StaticPages home help

モデル

$ rails generate model User  name:string email:string
$ rails destroy model User

マイグレーション

$ rails db:migrate
$ rails db:rollback
$ rails db:migrate VERSION=0

マイグレーションは逐次的に実行され、それぞれバージョン番号が付与される。
そのため、0を指定した数値に置き換えると、そのバージョンに戻すことができる。

そして、新たにGenerateスクリプトでページを追加する前に、テスト駆動開発を導入するとのこと。
メリット・デメリットあるみたいですが、主なメリットは以下。

  • 機能追加の副作用としてバグを生んでしまうことを防ぐ
  • 機能を変更せずコード整形(リファクタリング)を安全に行える。
  • アプリケーションの設計や他システムとのインターフェイスを決めやすい。

精神衛生上、バグってんじゃねーかなって状態で機能追加するのは集中力も削がれるので、
こういった自動テストの仕組みがあるのは有り難い。
なんでもかんでもテストすればいいってもんではないみたいですが。

そしてこの自動テストの実装は、Generateスクリプトを実行した際に自動で行われているみたいで、
いくつかテストコードが生成されておりました。
これに追加のテストコードを実装します。
応答が返ってくるか、htmlの特定タグの中身は指定した形式で出力されているか、など簡単な内容を追加していく。
複雑なアプリのテストコードを見てみたいですねー、実装しているコードと同じくらい記述してそうな気がします。

ある程度テストコードを追加したら、ソースの記載が重複している箇所を修正していきます。
DRY原則(Don’t Repeat Yourself: 繰り返すべからず)という原則に従う必要があるため、
こういった重複は排除するとのこと。
つまり、同じコードは書くなってことですね。
HTML形式のテンプレートファイルに、ERBという埋め込み型のRubyコードを書いて、繰り返し処理などを駆使して記述箇所が重複している箇所を修正していきます。

最後に、Guardというgemを使って特定ファイル編集時に自動的にテストを行う方法を学びました。
Guradfileに必要な動作を記述し、実行すると例えばルーティングファイルを変更したときだけ、
テストを実行することができました。
実行する手間も省けます。

あとがき

なぜそうしないといけないのかという部分も説明してくれるので、理解がしやすいです。
忙しくなってきてあまり時間がとれていませんが、もっと時間を捻出してさらに理解を深めていきたい。