注記の追記
Windows だと本家の libffi は(一部)誤動作するようです。
Ruby-FFI が引用する libffi fork は Windows 向け fix が入っていて、本家にも PR してるけど、2019-08-13 現在まだ merge されていません。
要約
- AWS A1 Instance で Ruby-FFI が seg fault したよ
- Amazon Linux 2 の libffi-devel を使ったら seg fault しなかったよ
- Ruby-FFI は内部に支流の libffi を持ってるよ
- Ruby-FFI はシステムに libffi-devel 等が無い場合、内部の libffi をリンクするよ
- Ruby-FFI では --enable-system-libffi を付けるとシステムの libffi の利用を強制できるよ
解法
with bundler
$ bundle config build.ffi --enable-system-libffi
ところで
支流の libffi とは
Ruby-FFI の .gitmodules に書いてあるリポジトリが http://sourceware.org/libffi/ に書いてあるリポジトリと違うので、支流と呼んでみました。
(前者は後者を fork したもののようです。)
--enable-system-libffi について
extconf.rb にて enable_config()
で参照されています。
changelog によれば 2019-05-17 に追加されたようです。デキタテホヤホヤ。
なぜ初手で libffi-devel をインストールしなかったのか
数年前に Rails セットアップの最小手順を模索した際に、各 devel パッケージを yum install から除外してみて不都合ないか確認した結果、libffi-devel 要らねってなったのです。
当時は nokogiri に --use-system-libraries つけてなかったり、まぁ、トレンドは変わるのですね。