概要
Ruby製のmigration toolのRidgepole話。
これの動作が遅かったので調査した。
結論
OSにdiffコマンドがないと遅くなる
調査方法
Gemfile経由でインストールして
bundle exec ridgepole -c config.yml --apply
としたときに動くものの実体は
https://github.com/ridgepole/ridgepole/blob/2.0/bin/ridgepole
なので、このbin以下にあるファイルを実行環境にコピーしてきてprofilerを入れる(今回はruby-profを使いました)
で、実行時間を食っている場所を探していくと、
RidgepoleがさらにDiffyというライブラリを呼んでいて、
これがOSのdiffコマンドを叩くところで時間を食っていることが分かった。
diffy/lib/diffy/diff.rb at 85b18fa6b659f724937dea58ebbc0564f4475c8c · samg/diffy · GitHub
これでOSにdiffコマンドをインストールしてあげれば解決。
CentOS系とかだと入ってないことがあって
$ sudo yum install diffutils
とか
$ sudo dnf -y install diffutils
でインストール。