WIP パーフェクトRuby on Rails書評とか要約

1章

学び

rdefs便利そう

Rakeで実行される単位をタスクと呼ぶ

bundle execは名前空間みたいな感じで空間を分けることができる ex rakeとbundle exec rake bundle exec rakeはプロジェクト、rakeはライブラリ保存場所を呼び出す

db:migrate:statusで現在のMigrationIDを確認できる

develop環境で/rails/info/routesにアクセスするとURL情報をみれる(いつも/info/routesを打ち込んでいて諦めるので覚える)

overloaded POST html5でPUT/DELETEが採用されていないためPOST情報にPUT/DELETE情報を埋め込むことにより 擬似的にPUT/DELETE操作を可能とすること

疑問点

銀座RailsにてCoC(Convention over Configuration)があるが故に モデル名を予測しやすいので攻撃がしやすいみたいなことを言っていた。 これに対する対策をRails側ではどのように行っているのか?

rails serverでローカルにWEBrickが起動してサーバが立ち上がる。 そもそもとして、クライアントサーバモデルが理解が浅い気がする。 そもそもなぜサーバ間でのやりとりが可能なのだろうか?(パケットレベルで説明する必要はある?) Twitterで転職の質問でサーバー間のやりとりを説明して下さい。みたいなものがあると聞いたが自分なりの解答を考えてみる。

2章

学び

M=Model データベースとの接続とデータに対する操作、およびビジネスロジック V=View Model の内容を参照し視覚表現を行う部分 C=Controller Modelのロジック呼び出し、必要なViewの選択など、ModelとViewをつなぐ部分

個人的にControllerはModelのインスタンスのようなイメージ データベースに置き換えると Viewが外部スキーマ Controllerが概念スキーマ Modelが内部スキーマ というイメージ(正確にはModelが概念スキーマだが....)

Query Interface

ActiveRecodeのメソッドチェーン

ActiveRecord::Relationはチェーン内容を蓄積していき、呼び出し時に評価される

ActiveRecord::Relationの中身見ると楽しいかも

明示的に任意の箇所で SQL を発行したい場合は、to_a を call して配列に変換すると発行される

ActiveRecodeの保存操作におけるメソッド 「 ! 」 を 伴 わ な い メ ソ ッ ド は バ リ デ ー シ ョ ン 失 敗 時 に は 例 外 を 起 こ さ な い 「 ! 」 を 伴 う メ ソ ッ ド は バ リ デ ー シ ョ ン 失 敗 時 に は 例 外 「 A c t i v e R e c o r d : : R e c o r d I n v a l i d 」 が 起 こ る

コールバックポイントはメソッドによっては使えないものがある

renderのテンプレート検索 app/views/ コントローラ名/アクション名 .html.erb renderは省略可能 def show end は def show  render :\show (絵文字に変換されるの\入れてる) end が呼び出されている

variant PC以外でViewを切り替える

helper number_with_delimiter

疑問点

モデルは、ビジネスロジックとあるがそもそもビジネスロジックはというのがよくわかっていない。

データベース的に考えるとわかりやすい

SQL の構築を抽象化する機能やコネクションプール[ActiveRecord]

調べる

3章

学び

2重送信は、formのdata optionに対して data: { disable_with: '作成中...' } みたいにするがRails5.0からはデフォルト機能になった https://railsguides.jp/5_0_release_notes.html

物理削除 レコードを削除する

論理削除 削除フラグを立てる

describeメソッド

引数に対象となるオブジェクトやメソッド名を指定

context メソッド

引数で条件を指定します

rspecのlet(:event)は変数でなくてeventメソッド

gemのshoulda-matchers が便利

エンドツーエンドのテスト

クライアントを操作し、サーバ側をブラックボックスとして 捉えて入力と出力をチェックするテスト

Javascriptのテストは、 poltergeist

疑問点