Ald*_*ldo 22 ruby openssl capistrano ruby-on-rails ubuntu-22.04
我有一个支持 Rails 7 和 Ruby 3 的 Rails 应用程序,它在我的带有 Ubuntu 22.04、ruby 3.0.2p107 和 Rails 7.0.2.3 的开发机器上运行良好。
现在我正在尝试设置 Capistrano(版本 3.17.0),以便将 Rails 应用程序部署到运行 Ubuntu 22.04 的服务器。但是,由于以下错误,我无法这样做:
SSHKit::Runner::ExecuteError: Exception while executing as username@server: rsa#set_key= is incompatible with OpenSSL 3.0
Run Code Online (Sandbox Code Playgroud)
Capistrano 似乎与 Ubuntu 22.04 中默认的 OpenSSL 库 OpenSSL 3.0 不兼容。我猜这是一个错误,但我没有找到任何报告它的帖子。我也没有找到任何解决方法。
我尝试通过安装 OpenSSL 1.1.1 来解决该问题,但 Rails 应用程序仍然使用 OpenSSL 3。也许解决方案是使用 --with-openssl-dir 选项重新安装带有 OpenSSL 1.1.1 的 ruby 3。
有什么建议吗?
Ald*_*ldo 32
报告的错误是由于rails net-ssh gem 不支持OpenSSL 3.0 造成的。
幸运的是,昨天发布了新版本的 net-ssh gem,提供了 OpenSSL 3.0 支持,从而解决了该问题。
基本上,添加
gem 'net-ssh', '7.0.0.beta1'
Run Code Online (Sandbox Code Playgroud)
并运行捆绑安装解决了这个问题。