Capistrano は、OpenSSL 3.0 との互換性がないため、Rails アプリのデプロイに失敗します

概要

Rails 7 と Ruby 3 をサポートする Rails アプリケーションがあります。これは、Ubuntu 22.04、ruby 3.0.2p107、Rails 7.0.2.3 を搭載した開発マシンでうまく動作しています。

現在、Ubuntu 22.04 を使用して Rails アプリをサーバーにデプロイするために Capistrano (バージョン 3.17.0) をセットアップしようとしています。ただし、次のエラーが発生するため、これを行うことができません。

SSHKit::Runner::ExecuteError: Exception while executing as username@server: rsa#set_key= is incompatible with OpenSSL 3.0

Capistrano は、Ubuntu 22.04 のデフォルトの OpenSSL ライブラリである OpenSSL 3.0 と互換性がないようです。バグだと思いますが、それを報告する投稿は見つかりませんでした。回避策も見つかりませんでした。

OpenSSL 1.1.1 をインストールして問題を解決しようとしましたが、Rails アプリはまだ OpenSSL 3 を使用しています。おそらく解決策は、 –with-openssl-dir オプションを使用して OpenSSL 1.1.1 で Ruby 3 を再インストールすることかもしれません。

なにか提案を?

解決策

報告されたエラーは、rails net-ssh gem が OpenSSL 3.0 をサポートしていないことが原因でした。

幸いなことに、昨日 net-ssh gem の新しいバージョンがリリースされ、OpenSSL 3.0 のサポートが提供され、問題が修正されました。

基本的に追加するのは、

gem 'net-ssh', '7.0.0.beta1'

バンドルインストールを実行すると問題が解決されました。