I recently installed Ruby (via RVM) on a Mac I use for work, and upon trying to run rails (after the usual
bundle install) I got the following error:
There was an error while trying to load the gem 'secure_string'. (Bundler::GemRequireError)
Gem Load Error is: uninitialized constant OpenSSL::Digest::DSS
Strange, because I'm running all the same versions of RVM, Ruby and the project on others computers, albeit they are running Ubuntu.
A fuller stack trace is below:
paul.ridgway@pdr [10:22:05] [~/Documents/Code/project/project] [development *] -> % bundle exec rails s /Users/paul.ridgway/.rvm/gems/ruby-2.4.1@project/gems/bundler-1.15.3/lib/bundler/runtime.rb:85:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'secure_string'. (Bundler::GemRequireError) Gem Load Error is: uninitialized constant OpenSSL::Digest::DSS Backtrace for gem load error is: /Users/paul.ridgway/.rvm/gems/ruby-2.4.1@project/gems/secure_string-1.3.3/lib/securize_string/digest_finder.rb:8:in `<class:DigestFinder>' /Users/paul.ridgway/.rvm/gems/ruby-2.4.1@project/gems/secure_string-1.3.3/lib/securize_string/digest_finder.rb:6:in `<module:SecurizeString>' [snip] /Users/paul.ridgway/Documents/Code/project/project/config/application.rb:16:in `<top (required)>' [snip] from bin/rails:4:in `<main>'
As always my first step was to Google the error - but there is surprisingly little around. Quite a lot of articles talked about the issues and nuances around changing OpenSSL versions, but none spoke to this exact issue.
Having a poke around with
irb it seems that OpenSSL exists and much of it appears fine but the DSS constant is not there.
2.4.1 :001 > require 'secure_string' NameError: uninitialized constant OpenSSL::Digest::DSS from /Users/paul.ridgway/.rvm/gems/ruby-2.4.1/gems/secure_string-1.3.3/lib/securize_string/digest_finder.rb:8:in `<class:DigestFinder>' [snip] 2.4.1 :002 > OpenSSL => OpenSSL 2.4.1 :003 > OpenSSL::Digest::MD5 => OpenSSL::Digest::MD5 2.4.1 :004 > OpenSSL::Digest::DSS NameError: uninitialized constant OpenSSL::Digest::DSS from (irb):4 from /Users/paul.ridgway/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
After a number of failed attempts including messing with
autolibs in RVM the following worked:
rvm reinstall 2.4.1 --with-openssl-dir="$(brew --prefix openssl)"
Afterwards, do the usual
bundle install and
bundle exec rails s and all is well again.