Fixing: uninitialized constant OpenSSL::Digest::DSS on Mac OS Sierra

Fixing: uninitialized constant OpenSSL::Digest::DSS on Mac OS Sierra

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.