AUTOVICE

TECH BLOG

いきなりRailsアプリのデプロイが失敗するようになった... 「bundler: failed to load command: cap」の解決方法

2020-02-23

はじめに

いつものようにRailsアプリのデプロイを行おうとしたところ、以下のエラーが出力されました。

$ bundle exec cap production deploy
bundler: failed to load command: cap (/Users/user/.rbenv/versions/2.6.3/bin/cap)
LoadError: dlopen(/Users/user/.rbenv/versions/2.6.3/lib/ruby/2.6.0/x86_64-darwin18/digest/sha1.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /Users/user/.rbenv/versions/2.6.3/lib/ruby/2.6.0/x86_64-darwin18/digest/sha1.bundle
  Reason: image not found - /Users/user/.rbenv/versions/2.6.3/lib/ruby/2.6.0/x86_64-darwin18/digest/sha1.bundle
...

ほんの数時間前まで正常にデプロイできていたのに、いきなりできなくなってしまいました...

調査

エラーメッセージを見ると、Capistranoで使用されているライブラリの一部がロードされていないようです。
libssl.1.0.0.dylibというライブラリですが、削除はもちろん、設定をいじったりなどした覚えはありません。

エラーメッセージで検索したら以下のページがヒットしました。
swift - dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib - Stack Overflow

対処

上記ページの通り以下のコマンドを実行したところ、正常にデプロイできるようになりました。

$ brew switch openssl 1.0.2s
Cleaning /usr/local/Cellar/openssl/1.0.2s
Opt link created for /usr/local/Cellar/openssl/1.0.2s

まとめ

macOSのアップデートによるものなのか、原因はわかっていません。
ちょうどLaravelをいじっているところだったので、それが関係しているのか否か…