デフォルトrubyの罠 〜mac sierra〜
こんばんは!!
今日はrailsのお話です。
最初のrails入れるのにだいぶ苦労していた僕ですが
先日友人に「railsをpcに入れようとしたらエラーが色々でて、困っている」との連絡
が、、、
実際に会ってみて見ると、
僕も最初ruby入れる際にハマった罠だったので今回、記事にすることに決めました。
端的にいうと
.rbenv配下に入れたrubyをpcが読み取ってくれず、rails入れる時にエラーが出てしまう。
そして、その原因として
・macにはデフォルトでrubyが入っていて、そこをbashが読み取りにいっている。
さらに、ぶつかったものとして
・OS X El capitan以降からデフォルトrubyのアンインストールをしようとするとoperation not permittedが出る。
結論としては、
bash_profieの中でPATH設定を加えたら上手くいきました。
*ただ根本的な解決になっているのかは怪しいです。。。
ちなみに結論に行くまでにやっていたこととして
・usr/bin/ruby をアンインストールしようとするが、できない。→chmodしても
permission error。
・rbenv global でrubyのversionを指定していた。→rbenv versionでも切り替わっているのが確認済み
おぉそれならデフォルトのruby使えば良いじゃん!ってなると思うのですが問題が。。。
versionが古い!
そうなんです。デフォルトのrubyのversionは今回 2.0.0だったんですが
最新は2.4.1でなかなかversionが古い。
そして、デフォルトrubyを使わない理由(今の僕の理解範囲)として
・古いので公式のサポートがない。バグとかセキリュティの面で不安。
・最新versionはメソッドが増えていたり便利
などなど、、
そして、それを解決するためにrubyのversion管理ツールであるrbenvを使って最新versionにしていきます。
今回のエラー
rbenvで最新のrubyをインストールするまでは上手く行ったのですが、gem install bundlerをしたときに permision errorが出ました。。。
これはmacがデフォルトruby(usr/bin/rubyがある)を読みにいっているかつ、OS El Capitan以降、セキリュティが強化されて、/usr以下のルートディレクトリは sudo使わないとインストールできないみたいです。
ここで一回強行で、sudo gem install bundlerをすると上手くいきましたが
またまた、問題が!!
sudo gem install rails を打つと
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
ありゃ?
bundlerはsudoでできたけど、railsはできない。。
ここで which rubyをすると
usr/bin/ruby を読み取っている。
....おい! もっと前に気づけよ、俺笑
急いでいたため、rbenv versionsで見て、ruby -v の確認コマンド打っていなった僕。
ってことで、デフォルトrubyを潰す作業に入るが最初の冒頭 に書いたようにできず。。
ならば 読み取るpath変えて、usr/bin/rubyではなく/.rbenv配下のrubyを読み取れるようにしそこに入れるようにしました
~/.bash_profileをホームディレクトリの配下に作りました
解決策として、
ホームディレクトリの中に .bash_profileを作って、その中に
eval "$(rbenv init -)"
と打ち
$ source ~/.bash_profile
で反映させて、bashを再度起動(これ忘れがち)させ
ruby -v を打つと
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
できてる!!
which ruby を打つと
/Users/user_name/.rbenv/shims/ruby
できてる!!
ということで一旦落着。
別の解決策の可能性として
Rootlessを解除してデフォルトrubyを潰す。(参照:http://gabekore.org/emacs-auto-install-err-443)
とか、他にも解決策ありそうな予感。
今回参考にさせていただた記事です。
インストール手順参考
https://design4b.co.jp/blog/rails5_1-install-mac-2017
〜〜エラー参考〜〜
・rbenvでのversion切り替え:http://qiita.com/akatsuki174/items/c0384b9903b4b5cbbdaf
・bash_profile内コマンド:https://github.com/rbenv/rbenv/issues/938
・初期ruby罠について:http://gabekore.org/mac-default-ruby-problem
・gem install 権限について:http://qiita.com/tokimari/items/feda1ed61f2d8b5b317c
〜〜今後詳しく調べること〜〜
・中盤で書いた、railsがsudoを使ってもインストールできなかった理由は何か
・bash_profile, bashrc とか設定ファイルがあるけど、その読み込みの優先順位と仕組み
・rbenv/shims のshimsの必要性