banken のコードリーディング
明日はカルパスさんの鎌倉のお家にてTamarbの方々とコードリーディングを行う予定なので、少しでも話についていけるように予習しておこうと思います。
まだ確定ではないのですが、bankenというgemと、railsのソースコードを読むことになりそうです!
以下がそのbankenです。
READMEに目を通す
bankenがどんなものかわからないので、まずはじめにREADMEを読みます。
Bankenは、ユーザーがどのリソースにアクセスを許可されているかを制限するヘルパーのセットを提供してくれるgemです。
ControllerとViewでの権限判定をLoyalty層に分離できFat Controller対策としても有用とのことです。
またすべてのLoyaltyクラスは単なるrubyのクラスであるため、一部の共通処理をモジュールに分離したり、継承を増やすことでDRYにすることも簡単にできますし、ライブラリ特有の特殊なDSLを覚える必要もありません。
同様にBanken内部の実装もRailsの拡張はしていないので、Railsのバージョンアップがあってもそのせいで不具合が起きることはないそうです。
bankenでできるようになること
・ジェネレーターを提供してくれます
・クローズドシステムを構築できます
・railsで拒否された認証を救ってくれます
・カスタムエラーメッセージを作成できます
・banken_userをカスタマイズできます
・コンテキストを追加できます
・ストロングパラメーターで通すパラメーターを制御できます
大まかなフォルダ&ファイル構成を把握
以下のような構成になっております。
lib配下を見ていく
大事なファイルはlibフォルダ配下に入っていることが多いので、まずlib配下をチェックしに行きます。
lib直下にあるbanken.rbを開いてみます。
読んでてわからない変数が出てきたらRubyMineのジャンプ機能を使ってみます!!!
LoyaltyFinder.newしているLoyaltyFinderクラスってなんだ?と思ったらLoyaltyFinderにカーソルを合わせて、command + クリック するとLoyaltyFinderクラスに飛べます!!
ただジャンプ機能に頼るだけではよくないので、きちんと lib/banken/loyalty_finder.rb にあるのだというフォルダ構成も意識します。
こんな感じでlibフォルダ配下、その他ファイルを見ていきます。
あまり細かく見ていくと時間がかかりすぎてしまうため、今日はどんなメソッドがあるかサーっと目を通すくらいにしますw
また、コードを読んでいてメソッドの名前やフォルダ・ファイルの名前が分かりやすく、何に関するものなのか想像できるおかげでかなり助けられました。
自分も読みやすいコードをかけるように、コードリーディングしつつ命名方法や綺麗な書き方について意識していこうと思います。