第3章について
第3章では簡単なテストを実行しリファクタリングを行う。Railsではデフォルトでminitestがあるのでrails test
コマンドですぐにテストを実行することが可能。
目次
1.railsコマンドの短縮形
2.rails generateについて
3.httpメソッドについて
4.テストについて
5.DRY
6.guard
#1. railsコマンドの短縮形
rails generateやrails serverなどのコマンドには短縮形がある。
rails server
→ rails s
rails console
→ rails c
rails generate
→ rails g
rails test
→ rails t
bundle install
→ bundle
#2. rails generateについて
例えばrails generateコマンドでコントローラを生成すると自動的に関連ファイル(viewやテスト、ルートなど)を自動生成する。この機能は便利ではあるが、コントローラを削除したくなった場合にコントローラだけではなく関連ファイルも削除しなくてはならない。そういった場合にrails destroy
コマンドを実行すると関連ファイルも含めて削除してくれる。モデルの作成についても同様。
#3. httpメソッドについて
httpメソッドはブラウザからサーバに送られるリクエストのこと。
主に以下の4つがよく使われる。
- GET ... 最も使われるリクエストでweb上のデータを取得する時に使われる。
- POST ... 何らかのリソースを生成する時や更新する時によく使われる。
- PATCH ... リソースを更新する時に使われる。
- DELETE ... リソースを削除する時使われる。
ちなみに一般のブラウザではGETとPOSTしかサポートしておらずPATCHとDELETEに関してはJavascriptなどであたかもPATCHやDELETEリクエストであるかのように偽装、送信して利用する。
#4. テストについて
テストは開発においてバグ追跡やリファクタリングの観点から重要であるが、テストを行う上で「テスト駆動(TDD)」にするか「一括テスト」にするか決めるのに以下のような基準で判断すると良いらしい。
テストを先に書く場合
- アプリケーションのコードよりもテストこーどの方が短くシンプルになる場合
- セキュリティ周りのエラーが発生した場合
- バグを見つけてバグを再現する場合
- リファクタリングする時
テストを後に書く場合
- 動作の仕様が固まりきっていない場合
- すぐに変更しそうなコードに対するテスト
railsではデフォルトでminitestというテストが有効になっている。
rails testでtestディレクトリ下に書かれているtest.rbファイルに基づいてテストを実行する。
実行時に結果が失敗するとエラーメッセージが表示されるのでそれを参考にコードの修正点を探す。
#5. DRY
DRYは"Don't Repeat Yourself"の略でRubyの原則。
情報の繰り返しを避けてよりコードや仕様を明確にするべし。
#6. Guard
Guardを使うとシステムの変更を監視し、テストを自動的に実行させることができる。
bundle exec guard init
コマンドを実行すると統合テストとビューが更新される。その後Guardfileをrailstutorial.org/guardfileを参照し編集しbundle exec guard
でguardで自動テストを実行する。
この際、ターミナルを占有するので新しいターミナルを開いて実行した方が良い。
参考文献
PUTかPOSTかPATCHか?
get,post,delete,putそしてmatchでルーティングを頑張る
DRY原則をもう一度 -コンカレント・エンジニアリング-