activerecord-originator
という gem を作った。
めっちゃArelの内部構造に依存しているのだけど、デバッグのヒントを得るツールとしては便利なのではないかと思っている。
ただ常時出しておくと鬱陶しい気もしていて、使いたいときだけピンポイントでインストールするような使い方が良いのかなあと思ったりする。でもそれだと存在を忘れるんだよなあ。
1,2時間ぐらいで仕様や実装方法を検討して最低限コメントが出るプロトタイプまで作った。 その時のコードがこれ https://gist.github.com/pocke/9167bcdb8c13f7550da4ab322b99c229
そのあとちまちまコードを書いてgemとして公開した。思い立ってから2日でリリースまでこぎつけた。
default_scope
で追加された条件が分かりづらい、というところからスタートしていたので、最初は「default_scope
で追加された条件があればそれを分かりやすくする」という仕様を考えていた。しかしそれならより汎用的に対応したほうがいいよなあと思って今の形にした。一応deafult_scope
を条件にコメントとかを差し込めないかもコードを眺めてはいたけれど、それを見つける前に方針転換してしまった。
実際流行るかというと、どうだろうねえ。わりと"発明"なんじゃないかと思っているし、ハマるケースでは確実にめちゃくちゃ便利だとは確信している。とはいえ結構ログがデカくなるのうざいし、正直真に理解が難しいようなクエリがどの程度あるのかは微妙なところだなあと思っている。クソデカ検索条件クラスとかと戦うときには便利そうだけど、シンプルなRailsアプリのふつーなCRUDアクションとかだと無駄にクエリが読みづらくなるだけかもしれない。
これがデバッグに有用な情報であるという点には100%の自信があるのだけど、今の見せ方が最適かというと全然そうは思っていない。もっとnoisyじゃなく見やすくて役立てやすい見せ方が実現したほうが嬉しいと思うけれど、あんまりアイディアはない。
ちなみに実アプリでは(動作確認で一通り動くことは見ているけど)導入はまだしてないです。導入してみるかなあ
お野菜とかによくある「私が作りました」をイメージして作っていた。そんな感じの名前にしたかったけど、いい名前が思いつかず、GPTにいくつか候補を聞いた中からいい感じだなと思ったoriginateという単語を使ってみた。
Twitter(現X)とか英語版記事とかに書いたのだけど、こういう「SQLの各部分に対するデバッグ情報を出す」ツールって今まであったのかなあっていうのが気になっている。なんか知っている人がいたら教えてください。
思いついたコンセプトを、自分ではめっちゃいいと思いこんで興奮しながら、シュッと実装するという行為を久々にできて楽しかった。こういうの大好き
irb に issue を立てた。ダークサイドに落ちた人しかハマらなさそうな問題を踏んでいた。
久しぶりにこの日記を書いた。引っ越しで環境が変わったりしたのもあって、日記を書く習慣が途切れていた。本来日記のpublishはラズパイで自動化されているのだけど、そのラズパイをまだセットアップしていないから手動でのpublishになってしまっている。