2020-06-05 rbsでRailsのアクションの型を付けたい、純粋関数的な指向の権限管理ライブラリが欲しい
REST麻疹 近況
仕事のAPIでRESTしたい熱が熱くなりすぎてしまった。 が同僚各位のおかげでいい感じに熱取れてきた気がする。なんでもリソース熱がまだある。直らない後遺症かもしれない。
自分の人間性についてつい考えてしまう
最近はやだやだRESTがいい〜。State全部返したいよ〜〜〜〜。全部リソースを表す名詞のURLがいい〜〜〜〜。というのをやっていた。(こんなに可愛いものではない)
他、神速さんのNULL嫌いのUPDATEしないDB設計を見て「エクストリームな矯正ギプスとしてマイグレーション以外ではARつなぐときにdelete/updateできない権限のユーザーを当てるとよさそう」と放言したり
他、以前書いたActiveRecordのモデルが1つだとつらい の記事が言及されていた。(されてるよね?)
他「はなちんさんにめっちゃ煽られて翌日買ったけど、煽った当人躊躇してるから刺しに行きたい」とメモリ32GB煽り事件の被害者の声を聞いたこともある。 あ、あと43インチ4kすごい! 便利! 端っこの方の通知見逃すけど! みたいな件もあったな...。
これらの事案を勘案すると、自分は過激な方に思想を倒して煽るが実際は堅実に進めるという人間性なのかもしれない。
- 過激に煽る
- しかし周りに止めてくれるよき隣人がいる
- 私も最終的に日和るというか「まあそうだよね」と納得する
ここで納得するのは実装力が足りないのか、実効力がないのか、周りの人間のちからで正気に戻るのか...。 ううううう(プログラミング以外でもそういうことが多々あったのを思い出さないように頑張っている稼働音)
マイクアーム
届いたが結局同じ机につけている限り打鍵音などの振動は拾うのであった。 机の上は広く使えるようになったのでよいものとする
最近考えていること (あんまり過激ではないつもりです)
これが一番お得感が出るのではないかなあ。クライアントの生成のことを考えると全てがリソースで出来てるほうが何かと都合がよい気がする。
Railsのコントローラのアクションをaction_argsで普通の引数で書く
— はなちん (@hanachin_) 2020年6月5日
rbsでコントローラのアクションの型をつけて型検査をする
rbsを元にパラメータの型をTypeScriptの型に変換する
routesからTypeScriptのエンドポイントの定義を生成してパラメータの型と組み合わせる
というのをやりたいんだなあ
それの他にこれも気になっている。多分うまく動くと思う。
Web APIの権限管理のライブラリ、リクエスト中にリソースの状態や権限が書き換わる可能性がある場合は対象リソースに対して権限を持っているか都度確認しないといけないけど、リクエスト中に権限が変わる可能性がないことが担保されてるならキャッシュしてよいんだろうなあ
— はなちん (@hanachin_) 2020年6月2日
freezeされてるオブジェクトが引数に渡ってきた場合はリクエスト中その権限の結果をキャッシュする権限管理のライブラリがほしいんだなあ
— はなちん (@hanachin_) 2020年6月2日
みつを
全うなHTTPを喋っている限りGETリクエスト中の権限は全てキャッシュして良いはず。 ただしGET以外の場合のことも考えると
- 必要のない書き換えはしないはずなので
readonly
か何かで親のアソシエーションを取得 readonly?
なオブジェクトを権限管理の関数に渡すとリクエスト中はキャッシュされる
こういう権限管理ライブラリがあるとうまくいくんじゃないかと思う
オブジェクト単位で権限を管理するつらみがあり、スコープで範囲を絞ったり、アクションごとにしぼる手法が開発されていそうな印象。 ちゃんと設計思想しらべてないから間違ってるかもしれないけど。
これもリソースを意識するとよさそうな気がしている。知らんけど。
リクエスト中にリソースは書き換わらない、readonly?
ならば。
current_user
もリクエスト中に書き換わることはない、readonly?
で取得していれば。
であればそのリクエスト中リソースから current_user
に与えられた権限は常に変わらないと仮定できる。
readonly?
なオブジェクトを引数に取り認可を返す権限管理関数を定義すると、その関数はメモ化できる。
わいわい
決して過激派ではござません。
このあたりちゃんと動くのかを確認するサンプルを実装したい気持ちはあるけど、時間と実装力が足りない。誰か〜