bundler-leakとは
2019年に登場した、Ruby gemのメモリーリークをチェックするシンプルなgemです。Ruby Weeklyの記事で知りました。
- 元記事: Introducing Bundler-Leak: A Simple Way to Find Known Memory Leaks in Your Dependencies - Ruby on Rails Upgrades
- リポジトリ: rubymem/bundler-leak: Known-leaky gems verification for bundler: `bundle leak` to check your app
特徴は、プロジェクトのGemfile.lock
にあるgemを対象にしていることと、パッチ単位でチェックすることと、ネットワーク接続がなくても回せる点です。
bundler-leakは、gemのセキュリティチェックでおなじみのbundler-auditのforkだそうです。
rubymem.comというサイト↓を立ち上げており、ここでリーク情報を登録できるとのことです。
※実は昨年本記事ドラフトを書いた時点では上のサイトがコケていたのでしばらく記事を塩漬けにしていたのですが、先頃開催されたRubyKaigi Takeout 2020でこのbundler-leakの作者がこのgemについて発表していて↓、そのときにサイトを確認してみると正常に動くようになっていました。作者の@etagwerkerさんはアルゼンチン出身で米国在住だそうです。
インストール方法と使い方
ここに書くのも恥ずかしいぐらいシンプルです。gem install bundler-leak
で直接インストールするか、Gemfileのdevelopmentとtestにgem 'bundler-leak'
を追加してbundle install
を実行します。
以下によると、インストール後は最初に必ずbundle leak update
を実行して情報を更新する必要があります。
- Reddit: Introducing Bundler-Leak: A Simple Way to Find Known Memory Leaks in Your Dependencies : ruby
後はbundle leak
またはbundle leak check
で確認できます。
どうやってメモリーリークをチェックしているか
リーク情報は以下のリポジトリをGit submoduleとして用いています。
このruby-mem-advisory-dbには現在は上のgem↑が登録されていますが、元記事を見ると、leaky-gems↓の情報を元にyamlを作ったようです。
ruby-mem-advisory-dbの中にあるyamlファイルを見てみると、多くは2015年とか2012年の情報ですが、grape gemのリーク情報は今年7月に追加されていました。
ここから先は完璧に想像というか願望ですが、bundler-auditとruby-advisory-dbを運用しているrubysec↓に合流するとか連携する体制ができれば、bundler-leakを本格的に使えそうです。新しいプロジェクトなので、うまく回るようになるといいですね。
- リポジトリ: rubysec