Clean Code for Railsを読んだ
神速さんの同人誌がゲリラ物販されていたから頂いてきた。 pic.twitter.com/JXNwyL0SF9
— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) 2017年12月9日
RailsDM 2017の時にいただいた @sinsoku_listy さんのClean Code for Railsを読み終わった。RSpecの設定とか全然知らないことを学べて良い感じ。丁寧に書かれているので、Rails初心者からステップアップしたい人におすすめ。
— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) 2017年12月24日
いくつか突っ込んで話してみたい点もあったから、ブログでも書こうかな
神速さんの薄い本を読んだので、感想。
感想
- 全体的に丁寧に書かれていて、Rails初心者からステップアップしたい人には安心しておすすめできる。
- 中・上級者だと、恐らく知っていることが多くなってしまうため物足りないかも?
- 私は知らないことがちらほらあって面白かった
- 初心者に「これ読んで」って投げつけられるようになるために読む価値はあると思う
- 中・上級者だと、恐らく知っていることが多くなってしまうため物足りないかも?
- 知らなくて勉強になったところもあった
- Railsでの実戦経験が薄い人が、地雷を避けるのに一回読んでおくと便利そう。
- どっかで
1_024
って書いてあったのはウケた- ポート番号の際につらいから、アンダースコアを入れるのは6ケタからにしよう、みたいなやつって結局RuboCopに入ってないんだっけ……
- RuboCopが取り上げられていて良かった(ポジショントーク)
- Railsのdisabled by defaultは結構過激で、せめて
Lint: Enabled: true
を入れて欲しい気持ちがある(これは本の感想ではなくて、rails/railsの.rubocop.yml
の感想です。) - 設定について詳しくはWEB+DB PRESS vol.102で http://pocke.hatenablog.com/entry/2017/12/23/191346
- Railsのdisabled by defaultは結構過激で、せめて
突っ込んでみたいところ
- P19 外部キーをつけた場合に
dependent: :destroy
をつけよう、というのはActive Recordのcallbackを走らせたい、という意図かなー、というのが少し気になったon_delete: :cascade
したい
- P68 マイグレーションの際にモデルを使いまわさないのは完全に同意だけど、私は一時的なクラスをマイグレーション内に定義する派だなーと思った
- SQL書けない……
def change klass = Class.new(ApplicationRecord) do self.table_name = 'users' end klass.create!( # ... ) end
追記: ブログを書いてから思い出したことなどを呟いたから、のせておく
on_delete: :cascade はRDBMSとしての整合性は担保されるけど、アプリケーションとしての整合性は(callbackなどがあると)ぶっ壊れかねないし、callbackが後から生えてくることなんてふつうにあるだろうから実際どうなんだろうなあと思っている
— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) 2017年12月24日
あー、あとはブログに書き忘れたけど、RailsでFKをなるべくつける運用にしていると、テストデータを用意するのがめちゃくちゃ大変になりそうだけど、そのへんどうしているのだろう。articleがほしいだけなのに、article→blog→user→organization→payment→plan を全部用意する、とかが発生する
— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) 2017年12月24日