お手軽にRuby Gemのコードを開いて編集し元に戻す
Gemのコードで発生するエラーの原因を調べたり、コードを動かしながら確認したいと思ったりした時にGemのコードを手軽に開いてbinding.b
を仕込んでデバッグしたい。
bundle install --path vendor/bundle
でGemをインストールしてデバッグするのが一般的なやり方なのかもしれないが、ちょっと面倒。
そんな時に簡単にGemを開いてデバッグできる方法があった。
Gemのコードを開く
bundle open <Gem Name>
このコマンドでGemのコードを開くことができる。 以下のどちらかの環境変数にエディタのパスを設定すれば、そのエディタで開くことができる。
EDITOR
BUNDLER_EDITOR
EDITOR
を設定するとGitのコミットメッセージの編集に使用するエディタも変わってしまうので、BUNDLER_EDITOR
に設定するのがおすすめ。
私はVSCodeを使用しているので、fish shellの設定ファイル config.fish に以下を指定している。
set -gx BUNDLER_EDITOR (which code)
bashを使っている人は .bash_profile に以下を指定すれば良さそう。
export BUNDLER_EDITOR=$(which code)
Bundlerで管理していないGemのコードを開きたい場合は?
gemにもサブコマンドopenがある。
gem open <Gem Name>
Gemのコードを元に戻す
Gemの複数の箇所にbinding.b
やbinding.pry
を仕込んだ場合は元に戻すのが大変。
そんな時に便利なコマンドがある。
bundle pristine <Gem Name>
"pristine"は「手付かずの」という意味らしい。
<Gem Name>
を指定しないで実行した場合は、Gemfileに記載のあるすべてのGemを元の状態に戻すことができる。
Bundlerで管理していないGemのコードを元に戻したい場合は?
openと同様にpristineもgemのサブコマンドにある。
gem pristine <Gem Name>
すべてのGemの状態を元に戻す場合は以下のコマンドを実行する。
gem pristine --all