はじめに
Railsを学んでいると、特殊すぎる仕様にクラッとすることがあります。 そんな仕様たちを共有して消化しつつ、もし今後Railsを教えることがあれば見返せるように、記事にします。コメントがコードに干渉するってこと!!???
— たま / RUNTEQ53A (@SamuraiStats) January 27, 2024
👼「Be Openだよ、これがRailsだ。勉強だよ」
👿「ありえない実装だよなあ!受け入れられねえよなあ!!」
という戦いが常に起きてる・・・ pic.twitter.com/woLwcVMIMk
フレームワークをしっかり学ぶのが初めてなので、
学習を続けるにあたって自分自身が変わっていくとは思いますが。
とりあえず今のところの所感を。
問題
ローカルルールが多いところ、いろんな記法があるところがめちゃくちゃ苦手です。
コメントがコードに干渉する
個人的にはありえない仕様です。冒頭のこれですね
コメントがコードに干渉するってこと!!???
— たま / RUNTEQ53A (@SamuraiStats) January 27, 2024
👼「Be Openだよ、これがRailsだ。勉強だよ」
👿「ありえない実装だよなあ!受け入れられねえよなあ!!」
という戦いが常に起きてる・・・ pic.twitter.com/woLwcVMIMk
あまりにも変わりすぎる、等価な記法
Railsのこのどうとでも書ける感、正直苦手。やりすぎだと思う。
— たま / RUNTEQ53A (@SamuraiStats) January 26, 2024
でも慣れたら便利なんだろうし、慣れていきたいなあ pic.twitter.com/nYpDm6PsYM
レンダー周りだと、これもそうですね。「_user.html.erb
を呼び出す」って書きたい。
`<%= render @user %>`
— たま / RUNTEQ53A (@SamuraiStats) January 22, 2024
これで`_user.html.erb`呼び出してるんすか・・・まじすか・・・忘れそう・・・
書いて無いことを読み取ってくる
便利でもあると思います。
form_with(model: user)だけで`create`と`update`の振り分け自動化されてるのヤバ。これがRails・・・ pic.twitter.com/DZwi2qe41z
— たま / RUNTEQ53A (@SamuraiStats) January 21, 2024
これもそうですね。「id」なんて書いて無いのに、自動でidにアクセスする。
user_url(ヘルパー)
— たま / RUNTEQ53A (@SamuraiStats) January 22, 2024
resource: usersで自動で提供される
与えられたインスタンスから自動で:idにアクセスし、showアクションにつなぐ pic.twitter.com/8Umck2CwFw
belongs_to nameでname_idとname_typeを参照するといういつものアレ(不文律が多すぎる)
— たま / RUNTEQ53A (@SamuraiStats) January 28, 2024
あまりに魔法すぎる、省略されすぎる
routes.rbの`resources`って書き方、魔法すぎるww pic.twitter.com/bKJUqdTlPc
— たま / RUNTEQ53A (@SamuraiStats) January 21, 2024
Rails特有の言い回し・他の言語と意味が違うもの
「フィルタ」
一般的には「集合からの抽出」という意味で使われるが、
Railsでは(コントローラにおける)「フィルタ」は、アクション前後に共通アクションのこと。
「レイアウト」
一般的には「配置・構成」といった意味で使われるが、
Railsでは共通して適用されるHTMLを指す。
「スコープ」
一般的には「変数・関数のアクセス可能範囲」を指すが、
Railsでは(モデルにおいて)データベースクエリを名前付きメソッドとして保存することを指す。
終わりに
まーじで魔法なんですよね。ブラックボックス。
— たま / RUNTEQ53A (@SamuraiStats) January 22, 2024
「炎魔法!」で炎出てる感じですw
魔法使いになるのはやぶさかではないんですが、Rails以外に応用効きにくそうなのと、「記憶喪失になった自分が読んでもわかるコード」にはならなそうなのが苦手。
Railsの「設定より規約」ってよくわからなかったけど
— たま / RUNTEQ53A (@SamuraiStats) January 27, 2024
「設定がほとんどの場合で共通ならば、その設定をアプリケーションのデフォルトにすべきである」
という言い換えはしっくり来た。苦手な理由もこれかあ
「共通する設定」について知識が弱い
CoC(設定より規約)という概念についての一解釈ですね。
「共通すること、慣習的なことはまとめようよ」という理解。
そうなると、「共通」「慣習」を知らない人からすると????なことが多いという。
まあ、慣れるにつれて、「Railsってただただ便利では・・・?」派になりつつある🙄🤗ので、このまま頑張ります。