banken のコードリーディング

明日はカルパスさんの鎌倉のお家にてTamarbの方々とコードリーディングを行う予定なので、少しでも話についていけるように予習しておこうと思います。

まだ確定ではないのですが、bankenというgemと、railsソースコードを読むことになりそうです!

以下がそのbankenです。

github.com

 

 

READMEに目を通す

bankenがどんなものかわからないので、まずはじめにREADMEを読みます。

Bankenは、ユーザーがどのリソースにアクセスを許可されているかを制限するヘルパーのセットを提供してくれるgemです。

ControllerとViewでの権限判定をLoyalty層に分離できFat Controller対策としても有用とのことです。

またすべてのLoyaltyクラスは単なるrubyのクラスであるため、一部の共通処理をモジュールに分離したり、継承を増やすことでDRYにすることも簡単にできますし、ライブラリ特有の特殊なDSLを覚える必要もありません。

同様にBanken内部の実装もRailsの拡張はしていないので、Railsのバージョンアップがあってもそのせいで不具合が起きることはないそうです。

 

bankenでできるようになること

・ジェネレーターを提供してくれます

・クローズドシステムを構築できます

railsで拒否された認証を救ってくれます

・カスタムエラーメッセージを作成できます

・banken_userをカスタマイズできます

・コンテキストを追加できます

・ストロングパラメーターで通すパラメーターを制御できます

 

 

大まかなフォルダ&ファイル構成を把握

以下のような構成になっております。

gyazo.com

 

 

 

 

lib配下を見ていく

大事なファイルはlibフォルダ配下に入っていることが多いので、まずlib配下をチェックしに行きます。

lib直下にあるbanken.rbを開いてみます。

gyazo.com

 

 

読んでてわからない変数が出てきたらRubyMineのジャンプ機能を使ってみます!!!

LoyaltyFinder.newしているLoyaltyFinderクラスってなんだ?と思ったらLoyaltyFinderにカーソルを合わせて、command + クリック するとLoyaltyFinderクラスに飛べます!!

ただジャンプ機能に頼るだけではよくないので、きちんと lib/banken/loyalty_finder.rb にあるのだというフォルダ構成も意識します。

gyazo.com

 

 

 

こんな感じでlibフォルダ配下、その他ファイルを見ていきます。

あまり細かく見ていくと時間がかかりすぎてしまうため、今日はどんなメソッドがあるかサーっと目を通すくらいにしますw

 

また、コードを読んでいてメソッドの名前やフォルダ・ファイルの名前が分かりやすく、何に関するものなのか想像できるおかげでかなり助けられました。

自分も読みやすいコードをかけるように、コードリーディングしつつ命名方法や綺麗な書き方について意識していこうと思います。