久々にbrew upgrade
を実行したらopensslのなんかが読み込めなかっただかなんだか言われて、railsが起動しなくなった。
bundleもbrewも「ほしいライブラリを便利にインストールしてくれるツール」くらいの認識であまりどういう動きをしているか認識してなくて対応にちょっと苦労したのでメモ。
※あまり内部を意識せずに使えるツールなので、どういうものなのかすぐ忘れてしまう。。
作業ログ
brew grade
した。その後railsで使っているgemの一つが[opensslが読み込めない]とかいうエラーを出して起動できなくなった。よくわかってないまま、
bundle install
を実行して(エラー無く終了)再度railsを起動しようとしたが同じ状況他にもググって出てくるコマンドを実行してミドルウェアインストールとかなんだかんだした。=>が解決せず。
- gem,brew,bundlerについてちょっと調べた
- brew upgradeでopensslのバイナリの場所が変わってしまったかしたのが原因?今のgemライブラリは依然古い方を見に行ってしまっているのかと推測。
- opensslはmac上に使える状態で存在はしているので、再度gemライブラリをinstallし直せばなんか違いが起こる気がする。
bundle install
を実行したが、たぶん既にライブラリが存在しているため再インストールは実行されていないと推測vendor/bundle/ruby/2.x.x
の2.x.xのディレクトリ名を変更して(存在しないことにして)再度bundle install
を実行- pgのインストールでコケる。
- エラーメッセージを見ると「
/usr/local/Cellar/postgresql@9.4/9.4.11/bin/pg_config
が無い」とか言ってる。見てみるとたしかに無い。 - brew install postgresql@9.4実行してみる
- 似たようなフォルダできたけど9.4.11ではない。
/usr/local/Cellar/postgresql@9.4/9.4.26/bin/pg_config
はある。 - ていうか、存在してないような9.4.11のpg_configを使おうとしているあたり、どこかでそんな設定を自分でしていると予想
- railsのroot/.bundle/configにpgに対して
/usr/local/Cellar/postgresql@9.4/9.4.11/bin/pg_config
を使うように設定がされているのを発見(たぶん入社時に言われるがままに設定した※覚えてない) - 設定を削除。brew コマンドでpostgresqlはbrewのpostgresql@9.4を使うように設定。
brew link --force postgresql@9.4
(しなくてもよかったかも。) - bundle installを実行。全部正常にインストールされる
- railsが起動した
調べたこと
bundler
gemの依存ライブラリまでバージョンを固定管理したり、環境毎にgemライブラリを独立させたりできるツール。
このツールでインストールされるgemライブラリは、自分の環境では、railsのroot/vendor/bundle/ruby/x.x.x/以下にはいってた。
homebrew
macにミドルウェアとかツールをインストールするのに便利なツール。
/usr/local/Cellar/
以下にインストールしたプログラムのバイナリとか入ってる。
どうやってpathに入っているのかとかはあまり調べてない。
opensslはこっちで入れておく必要がある(gemライブラリはよくこれをつかうっぽい)
まとめ
仕事中に環境が壊れると焦って、エラーメッセージでググって出てきた「このコマンドをたたくとOK」みたいなやつを実行してしまいがち。
そして余計に環境が汚れていく(自分でなにをしているのかわかってない)
ゆっくり落ち着いて、扱っているものがどういうものなのか把握して対応していかないとだめだなと思った。