Web系企業でのバックエンドエンジニアとしての就職を目指して、ポートフォリオを制作しています。
ポートフォリオ制作のすべての記録を残していきます。
この記事は
Rails環境構築でエラーに出合いまくり七転八倒した私が、どうにかrails new
までこぎつけた軌跡を記しています。
エラー解消のためにひとつひとつの操作・コマンドを理解しようと、それぞれ意味を調べて書いています。
Railsでこれから環境構築する方の参考になれば幸いです!
マシンスペック
- macOS Monterey
- MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
- Intel Core i7
- メモリ 32GB
Ruby, Railのバージョン
- Ruby: 3.1.2
- Rails: 7.0.4
どうやってRuby, Railsのバージョンを決める?
- 基本最新のものを使うべき
- 理由:古いものだと脆弱性があったりセキュリティ的に問題がある可能性があるから
- メジャーバージョンが上がってすぐのタイミングなどでは安易に手は出さない方が良い
- 理由①:バグが潜んでる可能性があるから
- 理由②:周辺ライブラリ(gemなど)が対応していないことがあるから
- 理由③:ドキュメントがネット上に少ないから
環境構築の手順
- Command Line Toolsのインストール
- Homebrewのインストール
- rbenvのインストール
- Rubyのインストール
- RubyGemsのアップデート
- Bundlerのインストール
- Railsのインストール
- Node.jsのインストール
- データベースの用意
- Railsアプリケーションの新規作成!
なぜ上記のような準備が必要? そもそも何者?
-
Command Line Tools: Macに標準搭載されていないコマンド(Homebrewの
brew
コマンドなど)を使えるようになるツール。 - Homebrew: Macに標準搭載されていないソフト(rbenvなど)をインストールできるパッケージマネージャ。
- rbenv: Rubyのバージョン管理ツール。
- RubyGems: Rubyのインストール時に同梱される、Rubyのライブラリ(=gem)の管理ツール。
- Bundler: gemのバージョン管理ツール。
- Node.js: Javascriptランタイム(=JSの実行に必要な全てが詰まっているもの)。フロントエンドでJSを用いる場合、RailsのアセットパイプラインでJSの圧縮を行うにはJSランタイムが必須。
- データベース: Railsアプリケーションのデータの永続化のために必要。今回はMySQLを利用。
それでは、各ステップについて詳しく書いていきます!
余談の欄は、インストールがうまくいかなかったり途中でエラーが出た時などに見てください。
1. Command Line Toolsのインストール
$ xcode-select --install
上記のコードを実行するとポップアップが出てきます。
成功したら 2. Homebrewのインストール へ!
(余談: 私の場合)
私はもともとCommand Line Toolsが入っていたのですが、CLTを最新版にアップデートしようと思い以下のコード(現存のものを削除)を実行してから上記のコードでインストールを行いました。
$ sudo rm -rf /Library/Developer/CommandLineTools
2. Homebrewのインストール
Homebrewの公式サイトから、インストール用のコマンドをコピペして以下のように実行すればOK。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
以下のコマンドでインストールが無事にできているか確認。バージョンが表示されれば成功。 3. rbenvのインストール へ!
$ brew --version
(余談: 私の場合)
Homebrewのアップデート(brew update
)がエラー吐きまくり状態に陥ったので、一旦アンインストールしてインストールし直しました。アンインストールコマンドは以下です。(install.sh
->uninstall.sh
に書き換えたもの)
OSのバージョンによってコマンドが異なる&Homebrewでこれまでインストールしたパッケージも削除されるので注意。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
アンインストール後のインストール時のエラーは、こちらの方法(=中途半端に残ったファイルの削除)で解決しました。
3. rbenvのインストール
anyenvを使って、rbenvのインストールを行います。
anyenvの説明・インストール方法はこちらがとても分かりやすいです。
anyenvを使うことで、rbenv, nodenvでいちいちパスを通したり、initコマンドの実行を設定する手間が省けます🎉
1) ~ 3) の順に、コマンドを実行していきます。
rbenvのバージョンが表示されるのを確認できたら、4. Rubyのインストール へ!
# 1) rbenvのインストール
$ anyenv install rbenv
# 2) シェルを再起動
$ exec $SHELL -l
# 3) rbenvのインストール確認。rbenvのバージョンが表示されたらOK。
$ rbenv -v
4. Rubyのインストール
1) ~ 4) の順に、コマンドを実行していきます。
rubyのバージョンが表示されるのを確認できたら、5. RubyGemsのアップデート へ!
# 1) Rubyの最新バージョン確認
$ rbenv install -l
# 2) インストールしたいバージョンを指定してインストール
$ rbenv install <version>
# 3) 指定したバージョンをグローバルに適用
$ rbenv global <version>
# 4) シェルの再起動
$ exec $SHELL -l
# 5) 指定したバージョンが適用されているか確認
$ ruby -v
5. RubyGemsのアップデート
RubyGemsはRubyに同梱されますが、同梱バージョンよりも新しいバージョンが公開されていることも。確実に新しいバージョンが使えるようにアップデートしておきましょう。
$ gem update --system
6. Bundlerのインストール
gemのバージョン管理ツールのインストール。
※Bundlerのインストールの前に、今後のgemのインストール時間の短縮のために、ローカルでのドキュメント生成機能をoffにしておきます。
# .gemrcというgemのconfigファイルに、ドキュメント生成機能の停止を設定
$ echo "gem: --no-document" > ~/.gemrc
# Bundlerのインストール
$ gem install bundler
7. Railsのインストール
バージョンを指定して、Railsをインストールします。バージョンを指定しない場合、最新のバージョンがインストールされます。
$ gem install rails -v <version>
8. Node.jsのインストール
anyenvを使って、nodenvというNode.jsのバージョン管理ツールのインストールから行います。
anyenvのインストール方法はこちら。
# 1) nodenv(=Node.jsのバージョン管理ツール)のインストール。
$ anyenv install nodenv
# 2) シェルを再起動
$ exec $SHELL -l
# 3) nodenvのインストール確認。バージョンが表示されたらOK。
$ nodenv -v
# 4) Node.jsのインストール可能なバージョン一覧を表示
$ nodenv install -l
# 5) Node.jsのインストール
$ nodenv install <version>
# 6) Node.jsのインストール確認。バージョンが表示されたらOK。
$ nodenv versions
9. データベースの用意
MySQLのインストールを行います。
MySQLは起動したままで。Railsサーバの立ち上げ時にMySQLが動いている必要があるためです。
MySQLの停止はsudo mysql.server stop
でOK。
$ brew install mysql
# インストールの完了を確認
$ mysql --version
# MySQLの起動
$ sudo mysql.server start
10. Railsアプリケーションの新規作成
# MySQLを使用したRailsアプリを新規作成
$ rails new <app_name> -d mysql
$ cd <app_name>
# データベース新規作成(MySQL起動した状態で)
$ bin/rails db:create
# Railsサーバの起動
$ bin/rails s
http://localhost:3000/ に接続して、このような画面が表示されたら成功!!
bin/rails
コマンドについて:
bundle exec rails
として実行した時と同様に、Gemfileどおいrのgemを利用できる環境上でrailsコマンドを実行できる。プラス、SpringというRailsの起動を効率的に行う機能も組み込まれる。このように、よく使うコマンドを包み込んで使いやすくするスクリプトを「binstub」と呼ぶ。
最後に、アプリで使うruby, Node.jsのバージョンを固定しておきましょう。
(今回は ruby: 3.1.2, Node.js: 19.0.1のバージョンに固定しています。)
$ rbenv local 3.1.2
# -> 「3.1.2」と書かれた.ruby-versionファイルが作成される
$ nodenv local 19.0.1
# -> 「19.0.1」と書かれた.node-versionファイルが作成される
# バージョンが固定されているか確認
$ ruby -v
$ node -v
以上です!
お疲れ様でした!