我正在开发一个rails应用程序,遇到了一个奇怪的错误,我不知道如何修复它。我的一些测试在运行JWT.encode
时失败,错误消息是:
/Users/chille/.rbenv/versions/3.1.1/lib/ruby/3.1.0/openssl/hmac.rb:36:in `initialize': EVP_PKEY_new_mac_key: malloc failure (OpenSSL::HMACError)
我重新安装了ruby 3.1.1,也重新安装了OpenSSL以使用opensssl@3版本,因为该版本与ruby 3兼容,但没有成功。
如果有人知道如何解决这个问题,我将不胜感激。
MAC OS Monterrey 12.6.1
Ruby 3.1.1
Rails 7
1条答案
按热度按时间ep6jt1vc1#
我认为这是OpenSSL 1.1和现在的OpenSSL 3(Ruby 3已经迁移到OpenSSL 3)之间的兼容性问题。https://github.com/jwt/ruby-jwt/issues/495
据推测,JWT的v2.5.0版本增加了对OpenSSL〉= 3.0的支持,如果JWT * 正确支持OpenSSL 3.0,则全新安装(或升级,如果您没有使用该版本)应该 * 解决这个问题。
更新:实际上看起来他们承认这是https://github.com/jwt/ruby-jwt/issues/526中的一个bug,而且它已经在Ruby的OpenSSL和JWT中修复了,但只是在大约2周前,所以到目前为止还没有新的版本。
--在我们等待修复的时候...... --
同时,如果您不直接需要OpenSSL 3,可以使用OpenSSL 1.1重新构建ruby
假设您已经通过homebrew安装了
openssl@1.1
,并且正在使用asdf来管理Ruby版本(尽管此env选项适用于任何使用ruby-build的版本):