とーますメモ

Ruby on Rails / Goなどの学習メモ

【Ruby】[2021版] MacでRailsが突然動かなくなった話

以前やらかしたことを、またやらかしてしまったので、
再度動作できるようにするまでのメモ。
thoames.hatenadiary.jp

TL;DR

opensslが1.1系に書き換わってる可能性大!!!!
なので以下のことをすれば直った。
1) openssl1.0をインストール
2) /usr/local/opt/opensslのシンボリックリンクを1)でインストールしたパスに貼る。
3) brew switch openssl1.0のパスを直接していする。

経緯

原因は恐らく今度もXcode関係かbrew関係のコマンドを弄ったかが原因だと思われる。
Railsを起動しようとしたら、以下のエラーが出たため
他のサイトに書いてあるとおりに、一度消して再インストールするという同じ過ちを犯してしまった。

$ bundle exec rails s

...
LoadError - library not found for class Digest::SHA1 -- digest/sha1
...

今後は、Rails関係でサーバが立ち上がらないときは、必ず自分のメモを見るように肝に命じておきたい...

自分の場合は/usr/local/opt/opensslのシンボリックリンクが、openssl@1.1を向いていたので
これを古いバージョン(以前使用していたのは1.0.2q)へ向け直す必要があったので、brew switchと組み合わせて以下のようなコマンドで、なんとか2.3.1がインストールできた。

ちなみに古いバージョンのopensslは「/usr/local/Cellar/openssl」に入っている。

$ brew switch openssl 1.0.2q
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/opt/openssl" rbenv install 2.3.1
$ rbenv rehash
$ rbenv global 2.3.1
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin18]

以前は上記での対応で良かったが、今回はなんと
「/usr/local/opt/openssl」のシンボリックリンクもなくなっており、
旧バージョンの「/usr/local/Cellar/openssl」もきれいに無くなっていた。
おいぃいいいい!!!どうなってる!!!!!!

以下のことをやったら直ったのでメモ

Openssl1.0のインストール

1.0系がきれいに消えているので再インストール

$ brew install rbenv/tap/openssl@1.0

インストールすると、「/usr/local/Cellar/openssl@1.0/1.0.2t」にインストールされる。

シンボリックの向きを1.0に向ける。

opensslのシンボリックリンクが消えていたので、1.0に向けて貼り直す。

$ cd /usr/local/opt
$ ln -s ../Cellar/openssl@1.0/1.0.2t openssl

brew switchコマンドで、openssl1.0に向きを変える

$ brew switch openssl /usr/local/Cellar/openssl@1.0/1.0.2t

あとは、前の記事と同じようにRuby, bundler, mysqlをインストールし直した。
これで動作した。

[参考]
brew upgradeしたらopensslが1.1.1gになってしまいRailsが起動できなくなってしまったとき - Qiita