体重133キロからのプログラミング

体重はちょっと減って今125キロです。

人生39日目

なんか人生の日数に対して記事数がおかしくね?と気づいたのが昨日。
やってしまっていたので調整しておいた。なんなら昨日やったのRailsチュートリアル6章なのに5章とか書いてるし、深夜のブログ執筆の危険性を表している。

Railsチュートリアル

7章からRailsのことばかりになってくるチュートリアルくん。
1週目のsample_appを見るに、この辺から心が折れてるっぽい。
ネットリと舐め回して5時間くらいで走破。わからない部分を徹底的に潰した。
RESTアーキテクチャの話が出てくるんだけど、これがまあわかりにくい。
なぜかというと言葉の表す範囲が広すぎる(定義が曖昧)から。
感覚的に掴んで、人によっては意味合いも違ってくるため文脈で判断するしかなさそう。
RESTアーキテクチャが〜って日常的にエンジニアが言ってるのかはわからんけども。

学び

本格的にRailsみが増してきたので7章以降は学びもここに記すことにする。

"assert_select"なんでも指定できる
  • assert_select "div#id_name"
    <div id = "id_name">が存在することを宣言

  • assert_select "div.class_name"
    <div class = "class_name">が存在することを宣言

  • assert_select 'form[action="/signup"]'
    <form action = "/signup">が存在することを宣言
    (form_forメソッドで送信先urlを明示的に指定すると、それに対応したアクションを呼び出すformタグが生成される)

URLの違和感

例えばユーザー登録に失敗した際など。
ルートが以下のようになっていると…

get  '/signup',  to: 'users#new'
resources :users

ユーザー登録ページのURLは/signupusers#newには対応するビューがある(登録ページなので当たり前)
登録情報の送信先は名前つきルートのルールに従うと、users_pathになる。
users_pathに対応しているのはusers#createなのだが、createアクションにはビューがない。(作ることはできる)
ここで登録に失敗すると、見た目は変わらないのにURLが/usersとなるのでなんだか気持ち悪い。(幾らかのエラーメッセージも添えられてる)
なのでルートを

get  '/signup',  to: 'users#new'
post "/signup",  to: "users#create"
resources :users

のようにすることで、ユーザー登録に失敗した場合などでもURLは変わることがない。
多分これは運用・管理していく際にわかりやすいっていうのと、使用者にアプリケーションの構造を知られてしまうことになるというのが大きな理由だと思う。(違うかも)

紙のノートにもメモってることなので焼き直しみたいになっちゃってるけど、まあなんども反芻するのは悪いことではないと思う。
なんか間違ってたりしたら物好きな人がコメントしてくれるシステム欲しい。
システムの名は「人脈」。
俺には実装されていなかったのである・・・。