概要
progateの手順通りにすすめていくと、見事にハマって全然手順どおりに行かず。。。
ようやく「Yay! You're on Rails!」の画面を拝むことができたので、
環境構築で躓いた部分を備忘録として書き残します。初心者が環境構築で挫折してしまう気持ちがわかりました。。。
環境
・macOS Catalina ver10.15.7
・ruby ver2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]
・rbenv ver1.1.2
・Rails ver6.0.3.4
・homebrew ver2.5.12
・yarn ver1.22.10
・nodebrew v8.9.4
・node.js v15.3.0
ハマったことろ
1.Homebrewインストール
2.rbenv / ruby-buildインストール
3.webpackerインストール
4.nodebrew / node / yarnインストール
1.HomeBrewインストール
以下のエラーでインストール失敗。
Error: RPC failed; curl 56 OpenSSL ssl_read: SSL_ERROR_SYSCALL
上記の文をコピペして検索すると、色々対策案が出てきます。(ネットの通信速度が原因?)
バッファを増やすことで改善するようですが、自分の場合は時間開けて、
再インストールしたらできました。
2.rbenv ruby-buildインストール
インストール自体は問題なしでしたが、「PATHを通す」作業で少しハマりました。
自分が使っているシェルによって少し手順が変わります。
ざっと調べた感じ、「bash」「zsh」の2択でしょうか。
ちなみに、macOSを 「Catalina」 にアップデートすると、
デフォルトシェルが bash から zsh になっているようです。
[ パスを通すとは? : https://qiita.com/soarflat/items/d5015bec37f8a8254380 ]
まず使っているシェルの確認のために以下のコマンドをターミナルに打ちこみます。
$ echo $SHELL
出力結果が/bin/zsh
の場合
以下のコマンド入力をして、PATHを通します。
$ echo 'eval "$(rbenv init -)"' >> ~/.zshrc
$ source ~/.zshrc
何をしてるか簡単に説明すると、.zshrc
というファイルに、
eval "$(rbenv init -)"
という文言を追記しています。
source ~/.zshrc
でファイルの更新をしているようなイメージです。
出力結果が/bin/bash
の場合
以下のコマンド入力をして、PATHを通します。
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
つまりは、シェルによって、編集するファイルが異なるということですね。
ちなみに.zshrc(.bash_profile)っていうのは、
設定ファイルと言われているもので、.zshrc(bash_profile)だと、
ターミナル起動時に読み込まれるファイルになっています。このファイルに環境変数、
今回の場合だとPATHを登録しておくことで、登録したディレクトリ直下のスクリプトが、
絶対パスを指定しなくても実行できるようになります。
[ 参考先:https://web-nari.net/2019/01/12/bash-profile/ ]
残るはRubyとRuby on railsのインストールを実施。
Railsコマンドでアプリケーションの作成まではすんなりと行きましたが、
最後のRailsサーバー立ち上げで、webpacker
が見つかりませんと言われて
インストール失敗。。。
どうもRails6でwebpackerが標準となり、
webpackerがインストールされてないとエラーが出るようです。
webpackerってなんだよ。。。
3.webpackerインストール
webpackerとはなんぞやというのは、こちらのページを参考にしました。
インストールは以下のコマンドで実行できます。
$ rails webpacker:install
、、、うまくいかずまたエラーです。第4項に続きます。
4.nodebrew / node / yarnインストール
今度はyarn
とnode
と言われるものをインストールしろといわれました。
node.js関連のものみたいです。こいつらのインストール方法を調査。
こちらに行き着いたんですが、自分はXcodeが入っていなかったので、
nodeのインストールはnodebrew
でやることにしました。
ちなみにnodebrewは、node.jpのver管理ツールです。
nodebrewはhomebrewでインストールできるみたいです。(ややこしい、、、)
手順はこちらを参考にさせていただきました。
$ brew install nodebrew
次にセットアップして、PATHを通します。
$ nodebrew setup
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc
$ source ~/.zshrc
※~/.zshrcの部分は環境に応じて変更してください。
いよいよnode
のインストールです。
インストールできるVerを確認して、Ver指定をしてインストールします。
自分はとりあえず最新Verをインストールしました。
$ nodebrew ls-remote
↑Ver確認
$ nodebrew install-binary v15.3.0
↑この場合はv15.3.0をインストール
$ nodebrew use v15.3.0
↑最後に使用するVerを指定するしておく必要があるらしい
お次はYarn
です。
公式ではnode.jsベースのパッケージマネージャーからのインストールは非推奨みたいです。nodebrewもnode.jsベースと言うことになると思うので、
YarnはHomeBrewでインストールします。
[ Yarn公式:https://classic.yarnpkg.com/ja/docs/install#alternatives-stable ]
$ brew install yarn --ignore-dependencies
--ignore-dependencies
をつけると、yarn
だけをインストールすることができます。
通常のインストールすると以下のパッケージがインストールされます。
・icu4c
・node
・yarn
nodebrewでnodeはインストールしているので、homebrewでもインストールしてしまうと、
依存関係のエラーになってしまうようです。
しかしこのままだとicu4c
もインストールされていないので、インストールします。
$ brew install icu4c
ここまでくればwabpackerも問題なくインストールできると思い、
再度挑戦するも次はこんなエラーが発生。
Error: An exception occurred within a child process:
RuntimeError: /usr/local/opt/node not present or broken
Please reinstall node. Sorry :(
入れたはずのnodeが見つからないと言っています。
/usr/local/opt/node
のディレクトリにないと言っているので、
このディレクトリに、先ほど入れたnodeが存在するようにする必要があります。
手順は、
1.ディレクトリの作成
2.シンボリックリンクの設定
になります。
[ 手順はこちらを参考させていただきました。 ]
1.ディレクトリの作成
$ mkdir /usr/local/opt/node
2.シンボリックリンクの設定
/usr/local/opt/node
にアクセスすると、
nodebrewで入れたnodeが存在するディレクトリへリンクするように設定します。
$ ln -s ~/.nodebrew/current/ /usr/local/opt/node/
そして再度、
$ rails webpacker:install
以下の表示がでて成功です。
Webpacker successfully installed 🎉 🍰
この状態で再度rails s
を実行すると、、、
無事成功です。