[Rails6.0.0][Mac]Rails 6で新しいアプリを作成、サーバー起動して初期画面を表示する

# はじめに
Rails 6.0.0がリリースされたので、Railsアプリを新規作成してみました。
この記事では、localhost:3000に接続して初期画面が表示されるまでをゴールとします。

# 前提
* Homebrewインストール済み
* rbenvでRubyのバージョンを管理している
* Bundlerを使ってGemを各Railsアプリ内にローカルインストールしている

ここでは`Homebrew`, `rbenv`, `Ruby`, `Bundler`のインストール、各種設定は省略させていただきます。
私は下記のサイトを参考にしました。

[Homebrew公式](https://brew.sh/index_ja)
[rbenvの使い方と仕組みについて](https://qiita.com/Kodak_tmo/items/73147ed4f0eec54d6e94)
[rbenv や Bundler を用いた Ruby環境構築](https://qiita.com/HayneRyo/items/d493a2b3cec2322f167c)
[Rails開発環境の構築（複数バージョン共存可能）（Homebrew編）](https://qiita.com/emadurandal/items/e43c4896be1df60caef0)(個人的に一番参考にさせて頂いた記事)

# 環境
* macOS Mojave バージョン 10.14.5
* Homebrew 2.1.10
* rbenv 1.1.2
* Ruby 2.6.3
* Bundler version 2.0.2

# Railsのインストールの前に

Rails6では`webpacker`が標準でインストールされるようになりました。
これにより**`yarn`のインストールが必要になりました。**
まだインストールされていない方はHomebrewからyarnをインストールしておきましょう。

```bash
$ brew install yarn
```

下記のサイトが参考になるかと思います。

https://yarnpkg.com/ja/docs/install#mac-stable
[Rails6 開発時につまづきそうな webpacker, yarn 関係のエラーと解決方法](https://qiita.com/NaokiIshimura/items/8203f74f8dfd5f6b87a0)

# Railsのインストール

## ディレクトリの作成
まず、新しく作成したいアプリの空のディレクトリを作成します。
今回は`test_app`という名前のアプリを作っていきます。

```bash
$ mkdir test_app
```

ディレクトリが作成できたら、そのディレクトリに移動します。

```bash
$ cd test_app
```

## Gemfileの作成
Railsアプリで使用するGemが記述された`Gemfile`ファイルを作成します。

```bash
$ bundle init
```

上記のコマンドによって作成されたGemfileファイルを下記のように編集します。

```rb
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails" # コメントアウトを外す
```

Terminalから編集する方法がわからない場合は、Finderから`test_app/Gemfile`を探して直接編集しても大丈夫です。

## Bundlerを使ってRailsをインストール
先ほど編集したGemfileを元に、Railsをインストールしていきます。
この時にpathオプションでインストールする場所を指定することで、Railsをローカルインストールします。
ここではpathオプションに`vendor/bundle`を指定します。

```bash
$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 12.3.3
Installing rake 12.3.3
Fetching concurrent-ruby 1.1.5
Installing concurrent-ruby 1.1.5
Fetching i18n 1.6.0
Installing i18n 1.6.0
# 以下略…
```

インストールが成功していれば、test_app内に
`Gemfile.lockファイル`
`vendorフォルダ`
が作成されています。これでRailsがインストールできました。

### nokogiriエラーが出てしまったら
bundle install時に`nokogiri`のインストールエラーがよく起こります。
もしこのエラーが起きた時は、下記の記事を参考にしていただければ幸いです。

[bundle install時にnokogiriエラー(nokogiriのバージョン1.10.4)](https://qiita.com/sasakura_870/items/5dc93e21c34c50b9114a)
[nokogiri を嫌いにならないで 〜インストール時のエラーを乗り越えろ〜](https://qiita.com/dskst/items/b1f073fcffeca3bc9fc6)

# Railsアプリの新規作成
次に、インストールしたRailsを使ってRailsアプリを新規作成します。

## rails new
`rails new`コマンドでRailsアプリを新規作成します。

```bash
$ bundle exec rails new .
       exist  
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
    conflict  Gemfile
Overwrite /Users/[ユーザー名]/test_app/Gemfile? (enter "h" for help) [Ynaqdhm] 
```

Gemfileを上書きしていいですか?と聞かれるので`y`と`Enter`を入力して上書きします。
これで色々とファイルが作成されます。

```bash
Overwrite /Users/[ユーザー名]/aaaaa/Gemfile? (enter "h" for help) [Ynaqdhm] y
       force  Gemfile
         run  git init from "."
Initialized empty Git repository in /Users/sasakuranaoya/aaaaa/.git/
      create  package.json
      create  app
      create  app/assets/config/manifest.js
      create  app/assets/stylesheets/application.css
      create  app/channels/application_cable/channel.rb
      create  app/channels/application_cable/connection.rb
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/javascript/channels/consumer.js
      create  app/javascript/channels/index.js
      create  app/javascript/packs/application.js
      create  app/jobs/application_job.rb

# …中略

# 上書きしたGemfileを元にbundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Using rake 12.3.3
Using concurrent-ruby 1.1.5
Using i18n 1.6.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using zeitwerk 2.1.9
Using activesupport 6.0.0
# …以下略
```

これでRailsアプリが新規作成できました。

# データベースの作成
`rails new`が終了したら、Railsアプリで使用するデータベースを作成しておきましょう。

```bash
$ bin/rails db:create
```

# サーバーを起動
あとはサーバーを起動して、`localhost:3000`へアクセスすれば終了です。

```bash
$ bin/rails s
```

# 手順まとめ
```bash
# インストールしていなければ
$ brew install yarn

# ディレクトリ作成
$ mkdir test_app
$ cd test_app

# Railsのインストール
# ここでGemfileを編集する
$ bundle init
$ bundle install —path vendor/bundle
$ bundle exec rails new .

# データベース作成
$ bin/rails db:create

# サーバー起動
$ bin/rails s
```