Open23
Rails
RubyとPHPとの違い
- インスタンス変数と普通の変数で書き方が異なる
- プライベートメソッドが、実は継承後のクラスでも使える
- 厳密比較である
.eql?
がPHPほど利用されない -
===
は厳密比較演算子として利用されているわけではないDo not use eql? when using == will do. The stricter comparison semantics provided by eql? are rarely needed in practice.
という別のものに利用されるため避けてねとRubocopに指摘される - Rubyのオブジェクトのプロパティを追加する際には、キーにシンボルを利用する。
hoge[:fuga]
といった感じ。-
hoge[:fuga]
でもhoge['fuga']
でもRailsのControllerでは問題ないが、他の箇所ではスタンダードなRubyを利用しているため、両者が区別される。
-
-
変数 ||= 指定値
という書き方はnilの際に指定値を代入するというやつ。nilガードという呼び方があるらしい- PHPで言ったら
変数 = その前の変数 ?? 指定値
が↑と同じ考え方の実装方法となる
- PHPで言ったら
Ruby
PlayGround
Rails
with Auth0
一部アクションのスキップなどミドルウェアまわり
skip_before_action
credential
RSpecの書き方まわり
- RSpecはメソッドを中心にdescribeをテストしていく。
- context内側で前提条件を書いていく
- 共通化とか結構できるけど、テストに関してバグを含むのがよろしくない
- Rubyのテストは共通化をしすぎると、書き方が複雑になりがち
- バグを仕込まないために愚直に書いていくようにしていくのが良さそう
- よくRspecのcontextやitで利用される英単語についてはこちらを見ると良さそう
RSpecの(describe/context/example/it)の使い分け
jwtで認証を実装する時のrspecテスト
リクエストの取り扱いについて
Resourceの出しわけ
alba
ActiveModelSerializers-zenn
active_model_serializers
albaの循環参照対策
Railsの場合のcreate, update, saveの違い
transactionとrollback
includes周り
DEPRECATED系
DEPRECATION WARNING: config.active_storage.replace_on_assign_to_many is deprecated and will be removed in Rails 7.1. Make sure that your code works well with config.active_storage.replace_on_assign_to_many set to true before upgrading. To append new attachables to the Active Storage association, prefer using `attach`. Using association setter would result in purging the existing attached attachments and replacing them with new ones.
rubocop系
エラーまわり
もうちょい公式のやつ見る。一旦RubyとRailsのお作法になれるまで個人ブログのものも参考にさせていただく。
認可
- policyとmiddlewareの使い分け->認可の機能がLaravelと異なり、デフォルトでは、Railsにはない。
- どのライブラリ使いますか?というので、書き方が変わるが、auth-logic
- 認可: punditを使うのが割と一般的なWEBアプリだったらちょうど良いかも。
- authorizeで引数のモデルに近いpolicyで認可のチェックをおこなってくれる(userだったらuser_policy)
- 細かく制御をしていくためのものなので、下手に共通化をしない方針
- プロジェクトによって
- pundit: 二番手くらい
- Controllerごとにやろう
- 一般的にちょうど良い
- cancancan: 結構多い
- 認可が大味
- 1個のファイルに権限をまとめよう->難しい
- banken: メドピア
- https://github.com/kyuden/banken
- データのリソースごとに権限をまとめたい
- 細かくやる必要があり、一般的なサービスにはやり過ぎになることが多いかも
- pundit: 二番手くらい
pundit
HTTP Request Faraday周り
例外処理
Factory
非同期処理 Sidekiq
PDF出力