Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Ruby: gemのメモリリークをチェックするbundler-leakを動かしてみた

bundler-leakとは

2019年に登場した、Ruby gemのメモリーリークをチェックするシンプルなgemです。Ruby Weeklyの記事で知りました。

特徴は、プロジェクトのGemfile.lockにあるgemを対象にしていることと、パッチ単位でチェックすることと、ネットワーク接続がなくても回せる点です。

bundler-leakは、gemのセキュリティチェックでおなじみのbundler-auditのforkだそうです。

rubymem.comというサイト↓を立ち上げており、ここでリーク情報を登録できるとのことです。


rubymem.comより


※実は昨年本記事ドラフトを書いた時点では上のサイトがコケていたのでしばらく記事を塩漬けにしていたのですが、先頃開催されたRubyKaigi Takeout 2020でこのbundler-leakの作者がこのgemについて発表していて↓、そのときにサイトを確認してみると正常に動くようになっていました。作者の@etagwerkerさんはアルゼンチン出身で米国在住だそうです。

インストール方法と使い方

ここに書くのも恥ずかしいぐらいシンプルです。gem install bundler-leakで直接インストールするか、Gemfileのdevelopmentとtestにgem 'bundler-leak'を追加してbundle installを実行します。

以下によると、インストール後は最初に必ずbundle leak updateを実行して情報を更新する必要があります。

後はbundle leakまたはbundle leak checkで確認できます。

どうやってメモリーリークをチェックしているか

リーク情報は以下のリポジトリをGit submoduleとして用いています。


github.com/rubymem/ruby-mem-advisory-dbより

この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を本格的に使えそうです。新しいプロジェクトなので、うまく回るようになるといいですね。

関連記事

RailsをHerokuにデプロイするときのBundlerバージョン(2020年版)

Docker内のbundler-auditが古い脆弱性警告を出す問題


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。