Rails×Reactで構成されたアプリケーションに対して git clone した後、環境構築しようとした際に、ものすごく時間がかかったので、同じミスをしないようにメモしておく。
結論
()は必要に応じて
① Nodeのバージョンを指定
(② .nvmrcに希望のバージョンを指定)
(③ .gitignoreに .nvmrcを追加)
④ gemfile.lock削除
⑤ Railsのバージョンを指定
⑥ Bundle install
⑦ Rails db:create
⑧ Rails db:migrate
⑨ npm ci
⑩ yarn -v
(→ yarnがインストールされていなければ yarn install
)
( rails webpacker:compile
)
①について
まずlatestなNodeを使用するとnode-gypのエラーが後々発生する可能性があるので、出来ればstableなバージョンをインストールして使用するべき。
(npmは基本自動で変更されるので合わせる必要なし)
②について
筆者は、Nodeバージョン管理にnvmを使用していたので以下のHPを参考にした。
引用:https://shinshin86.hateblo.jp/entry/2020/05/14/220149
③について
今後gitでマージする際に、.nvmrcファイルをアップロードしないように、以下のソースコードをプロジェクト内の.gitignoreファイルに追加。
/.nvmrc
④について
基本的にGemfile.lockを削除することは、基本的にNG。
だが、筆者がクローンしたプロジェクトは、__mimemagic <= 0.3.5に依存している__Railsアプリであったため、どうしても⑤のbundle installに失敗してしまっていた。
以下のHP上での、「都合によりRailsをアップデートできない・したくない場合の操作」を実行しても、どうしても上手くいかなかったため、
④→⑤の流れをするとなぜか上手くいった。
引用:https://hackmd.io/@mametter/mimemagic-info-ja
⑤について
Gemfileにrailsのバージョンを指定。
⑨について
npm ci
とは。
package-lock.json から依存関係をインストールするコマンド。
既に node_modules フォルダの中身があっても一旦削除してくれる。
依存関係の更新をせずに整合性チェックと依存パッケージのダウンロードのみを行い、 npm install より高速に動作し、CIで必要なことだけを行うのが、このコマンドである。
nodeを使用しているプロジェクトをgit cloneするときは、必ず必要になるコマンド
引用:https://qiita.com/mstssk/items/8759c71f328cab802670
⑩について
ローカルでサーバーを開いたときに、
ℹ 「wdm」: wait until bundle finished: / ......
などが出てきてフロント画面の描画が遅い時などは、このコマンドが必要になる場合がある。