この記事は
初心者でも迷わず環境構築ができるよう、1つ1つの手順を丁寧に解説した記事です。
なるべく「どうしてこのコマンドを実行するのか」も解説するようにしています。
「環境構築が苦手、よくわからない」という方は、ぜひ参考にしていただければと思います。
また「railsのバージョン指定がうまくいかない...」と悩んでいる方にも参考になると思います。
※もしこれを読んでもうまくいかなければ、ぜひ積極的にコメントいただけますと幸いです!
マシンスペック
参考までに、私のマシンスペックは以下の通りです。
- macOS Catalina 10.15.3
- MacBook Air (Retina, 13-inch, 2018)
- Intel Core i5
- メモリ 8GB
Ruby, Railsのバージョン
それぞれ下記バージョンで構築することを目指します。
- Ruby 2.5.7
- Rails 5.2.3
全体の流れ
この順番でインストールしていきます。
- rbenv(Rubyのバージョン管理ツール)
- Ruby
- PostgreSQL(データベース)
- Rails
構築手順
1. rbenvのインストール
rbenvとは、Rubyのバージョンを簡単に切り替えてくれるツールです。
1台のPCで複数のRailsアプリを作ろうとしたとき、「こっちのアプリではRuby2.5.0を使いたいけど、こっちはRuby2.6.0を使いたい...」という欲求が出てきたりします。
そんなときに活躍するのがrbenvです。
詳しい使い方は後で見ていくとして、まずはインストールしてしまいましょう。
rbenvをインストールするためにはHomebrewが必要で、HomebrewをインストールするためにはCommand Line Toolsが必要です。
順番に進めていきます。
1-1. Command Line Toolsのインストール
ターミナルを開き、次のコマンドを実行します。
# Command Line Toolsのインストール
$ xcode-select --install
Xcodeというツールをインストールしていない場合は「インストールしますか?」という画面が表示されるため、「インストール」を選択します。
Xcodeは重いので、少し時間がかかるかもしれません。
インストール完了後、次のコマンドでバージョンが表示されたら成功です。
# バージョン確認
$ xcodebuild -version
1-2. Homebrewのインストール
続いてHomebrewをインストールします。
Homebrewの公式サイトに飛ぶとインストール用のコマンドが用意されてるので、それをターミナルに貼り付けて実行するだけです。
コマンドは随時アップデートされたりするので、直接サイトから持ってくるのが賢明です。
ちなみにHomebrewとは、Macにデフォルトで入っていないソフトをインストールするためのツールです。
上の画像を見ると、「Appleが用意していないあなたの必要なものをインストールします」と書いてありますが、噛み砕くとそういうことです。
Homebrewを入れておくといろいろインストールできて便利なんだな、と理解しておけば大丈夫です。
1-3. rbenvのインストール
いよいよrbenvのインストールを行います。
ターミナルで次の4つのコマンドを順番に実行してください。
# (1) rbenvへのPATHを通す
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
# (2) rbenvを使うために必要な「rbenv init -」コマンドを設定
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# (3) 設定の反映
$ source ~/.bash_profile
# (4) rbenvのインストール
$ brew install rbenv ruby-build
(4)では、rbenvと一緒に、rbenvのプラグインであるruby-buildもインストールしています。
rbenvについて詳しく知りたい方は、こちらのブログで詳しく紹介されていますので読んでみてください(ただ、初学者には難易度高めです)。
このrbenvを使って、Rubyをインストールしていきます!
2. Rubyのインストールとバージョン適用
2-1. Rubyのインストール
rbenvでインストールできるバージョンは下記コマンドで確認できます。
# rbenvでインストールできるバージョンを確認
$ rbenv install --list
#=> Available versions:
# 1.8.5-p52
# 1.8.5-p113
# ...
# truffleruby-19.2.0
# truffleruby-19.2.0.1
今回は2.5.7
をインストールします。
# Ruby2.5.7をインストール
$ rbenv install 2.5.7
これでRuby2.5.7
がインストールされたはずです。
次のコマンドを打ってみましょう。
# インストール済みのRubyのバージョン一覧を表示する
$ rbenv versions
#=> * system (set by /Users/<ユーザ名>/.rbenv/version)
# 2.5.7
これは、system
(Macのデフォルト)と2.5.7
の2種類のRubyバージョンがPCにインストール済みであることを示しています。
2.5.7
もインストールできたことがわかりますね。
ちなみに「*」がついている方が、現在の環境に適用されているバージョンです。
2-2. 作業ディレクトリの作成&移動
続けて作業ディレクトリ(フォルダ)を作成します。
作業ディレクトリの名前は「sample_app」や「workspace」などがよくありますが、作成するアプリ名にするとわかりやすいでしょう。
ここでは私が作成したアプリ名「cooklog」とします。
作業ディレクトを作成します。
# 作業ディレクトリを作成
$ mkdir ~/cooklog
ここまでは「ターミナルにおいてどのフォルダでコマンドを打つか」は気にしなくてよかったですが、ここからは作業フォルダに入ってコマンドを打っていくことになります。
そこで、ディレクトリへの移動を行います。
# 作業ディレクトリへ移動(適宜パスを指定)
$ cd cooklog
2-3. Rubyのバージョンを適用
それでは作業ディレクトリに対してRuby2.5.7
を適用します。
先ほど作ったディレクトリにいることを確認して、次のコマンドを実行します。
# 現在のディレクトリにRuby2.5.7を適用
$ rbenv local 2.5.7
# 適用を反映
$ rbenv rehash
これで作業ディレクトリに適用するRubyのバージョンが変わったはずです。確認してみましょう。
$ ruby -v
#=> ruby 2.5.7p206 (2019-10-01 revision 67816) [x86_64-darwin19]
$ rbenv versions
#=> system (set by /Users/<ユーザ名>/.rbenv/version)
# * 2.5.7
Rubyのバージョンは、p206..以降が違っても問題ありません。
「*」が2.5.7
の方に移り、適用バージョンが変わったことを確認できました。
※ちなみにrbenv local x.x.x
が現在のディレクトリのRubyバージョンを変更するのに対し、rbenv global x.x.x
は使っているPCでデフォルトで使うRubyバージョンを指定します。
したがって、global
の方を使ってもOKです(今回は他のディレクトリへ影響することを避けるため、localにしています)。
2-4. bundlerのインストール
2章の最後に、gem
のインストールには欠かせないbundler
をインストールしておきます。
まずはターミナルでbundler -v
を実行して、bundler
がインストールされているか確認してみてください。
$ bundler -v
#=> Bundler version 1.17.2
上のようにbundlerのバージョンが表示されれば問題ありません。
「not found」と出るのであれば、次のコマンドでインストールしてください。
$ gem install bundler -v 1.17.3
※bundler 2.0.1以降をインストールしているとYou must use Bundler 2 or greater with this lockfile.
という厄介なエラーに遭遇することが多々あるため、無難な1.17.3
を推奨します(2020/3/8現在)。
3. PostgreSQLのインストール
続いてデータベースのインストールを行います。
今回はPostgreSQLを使うことにします。
次のコマンドを打ち込んで、インストールと起動を一気にやってしまいましょう。
# PostgreSQLのインストール
$ brew install postgresql
# PostgreSQLの起動
$ brew services start postgresql
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
4. Railsのインストール
ここからいよいよRailsをインストールしていきます。
次のコマンドでRailsをPC内にインストールします。
$ gem install rails -v 5.2.3
続けて、次のコマンドを打ち込んでRailsアプリの骨格を作成します。
# Railsアプリ作成(gemのインストールはスキップ)
$ rails _5.2.3_ new . -d postgresql --skip-bundle
途中、何か聞かれたら全てy
(yesの意味)を打ってEnterを押せばOKです。
.
はカレント(現在の)ディレクトリという意味です。
-d postgresql
はデフォルトのデータベースとしてPostgreSQLを使うという意味です。
--skip-bundle
の部分がポイントで、これをつけるとgem
のインストールは後回しにしてRailsアプリに必要なファイルだけを先に作ってくれます。
次に作られたファイルの中のGemfile
を開き、次のように書き換えます。
# 変更前
gem 'rails', '~> 5.2.3'
# 変更後
gem 'rails', '5.2.3'
'~> 5.2.3'
は「バージョン5.2.3
以上のものをインストールします」という意味なので、確実に5.2.3
をインストールするためにこの変更を行います。
そして、次のコマンドを実行して各種gem
をインストールします。
# 各種gemをインストール
$ bundle install --path vendor/bundle
※エラーが出たらこちらを参照
Railsのバージョンを確認し、きちんとインストールできていることを確認しましょう。
$ rails -v
#=> 5.2.3
最後に、Railsアプリを立ち上げるためにRailsサーバーを起動します。
※エラーが出たらこちらを参照
$ rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development
...(省略)...
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
上の感じになったらOKです。
http://localhost:3000/にアクセスしてみましょう。
この画面が表示されれば、きちんとRailsアプリが立ち上がっています!
Rails 5.2.3
、Ruby 2.5.7
が適用されていることがわかりますね。
これにて環境構築はおしまいです。
お疲れ様でした!
2020/3/7 追記
rails s
でActiveRecord::NoDatabaseError
が発生した場合
「データベースが作られていません」というエラーなので、次のコマンドを打ってから再度rails s
を実行してみてください。
$ rails db:create
2020/3/8 追記
bundle install --path vendor/bundle
でAn error occurred while installing pg (1.2.2)...
というエラーが出た場合
こんなエラーが出たときの対処法です。
An error occurred while installing pg (1.2.2), and Bundler cannot
continue.
Make sure that `gem install pg -v '1.2.2' --source 'https://rubygems.org/'`
succeeds before bundling.
エラーメッセージを遡っていくと、次の箇所でエラーになっていることがわかりました。
./siteconf20200308-17435-1nm6sy1.rb extconf.rb
--with-pg-config=/path/to/pg_config
Using config values from /path/to/pg_config
sh: /path/to/pg_config: No such file or directory # ここがエラー発生箇所
sh: /path/to/pg_config: No such file or directory
checking for libpq-fe.h... yes
(省略)
creating Makefile
つまり、pg_config
が無いと言われています。
ググった結果、この記事をヒントに解決することができました。
ls /usr/local/bin
またはls /usr/local/var
を実行してみると、どちらかにpg_config
がいると思います。
私の場合は前者で発見しました。
そこで、以下のコマンドを実行してpg_config
の参照先を変更しました。
bundle config build.pg --with-pg-config=/usr/local/bin/pg_config
これで再度bundle install --path vendor/bundle
を実行すると、エラーを解決することができました。