CircleCI で Rails の db:create に失敗するときの対処法

前提条件

以下のような環境です。

  • Ruby のイメージは circleci/ruby:3.0.2
  • データベースは PostgreSQL

エラーメッセージ

以下のようなエラーメッセージが出ます。

#!/bin/bash -eo pipefail
bundle exec rails db:create

rails aborted!
LoadError: libffi.so.6: cannot open shared object file: No such file or directory - /home/circleci/repo/vendor/bundle/ruby/3.0.0/gems/ffi-1.15.3/lib/ffi_c.so
/home/circleci/repo/vendor/bundle/ruby/3.0.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
...
...
...

結論

libffi.so.6 が存在しないためエラーが出るので、(半ば強引に)シンボリックリンクを張ります*1。以下のコードを steps に追加すればエラーが出なくなるはずです。

      - run:
          command: |
            sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 /usr/lib/x86_64-linux-gnu/libffi.so.6

参考(答え)

*1:libffi.so.7.1.0 を実態とします

Powered by はてなブログ