やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

OSS

Rails7.10にて提案した内容がリリースされた

少し前にはなりますが、RailsのDiscussionに問題提起を行いました。 その後、Discussionで「Issueを作成して良いよ〜」とお許しを頂いたのでIssueを作成した所、修正PRが作成されてマージされるという...とんでもない出来事がありました。 www.okb-shelf.wor…

bulletのログファイルをパースするgemをリリースしました

ActiveRecord上のN+1問題を検知するbulletというgemがあります。 bulletを仕込んでおく事でbullet.logファイルに該当箇所でN+1問題が発生している旨のログが出力されるようになります。どんな対応をすれば良いかまで提案してくれる...非常に賢いですね。 202…

RuboCopに勝手にオレオレCopを実装してみる

前回、RuboCopの処理を追いかけました。 長い旅になりましたが、なんとかRuboCopのコマンドが実行されてから画面に結果が出力されるまでの流れを完全に理解しました。せっかくコードを読んだわけなので何かしらの変更が出来ないか試してみたいと思います。 …

【Part2 / 2】RuboCopの結果が出力されるまでの実装を追ってみる

※この記事はRuboCopの内部実装を読んでみるシリーズの第2記事です。 前回の記事でターミナルでrubocopコマンドを実行するとRuboCop::CLIクラスのrunが呼び出されて、紆余曲折あって各Copのチェックがコールバックとして呼び出されていることが判明しました。…

【Part1 / 2】RuboCopの結果が出力されるまでの実装を追ってみる

※この記事はRuboCopの内部実装を読んでみるシリーズの第1記事です。 ある日のこと、いつものようにRuboCopに怒られた際に「RuboCopってどうやって作られてるのかな...」と唐突に気になってしまったのでコードを読んでみることにしました。最初は数日あれば終…

RubyでArrayクラスを継承させると面白いことが起きる

後に改めて記事を書きますが、最近はRubocopのコードを読み進めています。 そんな中で「面白いなぁ...」と感じたコードがあったので紹介がてら動作を確認してみたい思います。 なんと定義されたクラスがArrayクラスを継承させているではありませんか。 modul…

gemにbinding.irbを仕込んでデバッグする方法

OSSのコードを読むときは基本的にgithub.devを使っていますが、最近、限界を感じています。 というのも巨大なコードベースを持つOSSの場合は処理を追うだけで大変です。その上、この変数には〇〇クラスのインスタンスが...。この関数の引数には△△が指定され…