After changig my Rails app’s Gemfile to use Ruby 3.0.0 I get the following error when running bundle install:
~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/digest.rb:16:in 'const_missing': library not found for class Digest::SHA256 -- digest/sha2.so (LoadError)
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/digest.rb:100:in 'block in Digest'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/digest.rb:98:in 'synchronize'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/shared_helpers.rb:208:in 'digest'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:45:in 'block in validate_bundler_checksum'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/rubygems/package/file_source.rb:29:in 'open'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/rubygems/package/file_source.rb:29:in 'with_read_io'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:44:in 'validate_bundler_checksum'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:12:in 'pre_install_checks'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/rubygems/installer.rb:286:in 'install'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/source/rubygems.rb:158:in 'install'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:67:in 'install'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:18:in 'install_from_spec'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:163:in 'do_install'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:154:in 'block in worker_pool'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/worker.rb:62:in 'apply_func'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/worker.rb:57:in 'block in process_queue'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/worker.rb:54:in 'loop'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/worker.rb:54:in 'process_queue'
from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/worker.rb:88:in 'block (2 levels) in create_threads'
NB: I installed Ruby using rbenv and at first there was an SSL issue during installation, which I fixed (based on some suggestions found online) by pointing to the Homebrew-installed SSL library while running ruby-build (I am on macOS):
RUBY_CONFIGURE_OPTS=--with-openssl-dir=/usr/local/Cellar/openssl@1.1 rbenv install 3.0.0
Ruby itself now works fine, here is the output of ruby --version
:
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin20]
However irb shows the same error:
$ irb
irb(main):001:0> require 'digest'
=> true
irb(main):002:0> Digest::SHA256
Traceback (most recent call last):
5: from ~/.rbenv/versions/3.0.0/bin/irb:23:in '<main>'
4: from ~/.rbenv/versions/3.0.0/bin/irb:23:in 'load'
3: from ~/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in '<top (required)>'
2: from (irb):2:in '<main>'
1: from ~/.rbenv/versions/3.0.0/lib/ruby/3.0.0/digest.rb:16:in 'const_missing'
LoadError (library not found for class Digest::SHA256 -- digest/sha2.so)
irb(main):003:0> Digest.constants
=> [:Instance, :Base, :Class, :REQUIRE_MUTEX]
Would someone have suggestions to fix the issue?