Rails プロジェクト作成手順

今までCloud9を使ってRails開発をちょこちょこしていました。
今回は、イチからやってみようということでCloud9を使わずにプロジェクト作成をすることにしました。

####①Homebrewのインストール
Macユーザー限定ですが、まずは`Homebrew`のインストールを行います。
[公式](https://brew.sh/index_ja.html)に書いてある通りにスクリプトを実行すれば、問題ないはずです。

バージョンが表示されれば、うまくインストールされています。

```
$ brew -v
Homebrew 2.2.6
```
####②rbenvのインストール
Rubyのバージョン管理ができるように`rbenv`のインストールを行います。

```
$ brew install rbenv ruby-build
```

次にパスを通します。
なぜかというと、MacデフォルトのRubyを使わずにrbenvでインストールしたRubyを使用するためです。

MacデフォルトのRubyは、/usr/binというところに入っているのですが、rbenvでインストールしたRubyは、/Users/ユーザー名/.rbenv/shims/に入ります。

そのため、ターミナルからRubyを実行するときに、rbenvの中のRubyでRubyを実行するように切り替えをする必要があります。

```
$ echo 'export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile　　//.bash_profileを読み込む
```

`eval “$(rbenv init -)”`を`.bash_profile`ファイルに書いて読み込みすることによって、Macにログインしたら、Rubyコマンドを実行するときはrbenv内のRubyを実行するように設定しておくができます。

####➂Rubyのインストール
ここでようやくRubyのインストールを行います。
まずは、インストール可能なバージョンを確認します。

```
$ rbenv install --list
```
今回は、`2.7.0`をインストールします。

```
$ rbenv install 2.7.0
  // 環境全体の有効なバージョンを2.7.0にする
$ rbenv global 2.7.0
$ rbenv rehash
$ ruby -v
```

####④Bundlerのインストール
次に、`Bundler`のインストールをします。
`Bundler`とは、gemの依存関係とバージョンを管理するためのツールです。
`Bundler`を使うと、依存関係のあるgemを一括でインストールしてくれます。
一括でインストールしたgemはすべて、依存関係が解決された状態で、インストールされます。

```
$ gem install bundler
$ bundle -v
```

####⑤Railsプロジェクトの作成
ここで、プロジェクトを作成します。
作成したプロジェクトの中で、`bundle init`を行います。

```
$ mkdir ~/testApp
$ cd ~/testApp
$ bundle init
```
成功すれば、Gemfileが作られているはずです。
Gemfileとは、インストールしたいgemを列挙するものです。
ただ、このままだと使えないので、Gemfileを編集する必要があります。

```ruby:GemFile
# frozen_string_literal: true

source "https://rubygems.org"

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

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

システムのgemはできるだけクリーンに保ち、gemは`vendor/bundle`に入れて`bundle exec`で呼び出すのがいいそうなのでそうします。

```
$ bundle install --path=vendor/bundle
$ bundle exec rails -v
Rails 6.0.2.1
```

`--path vendor/bundle`オプションを付けることで、プロジェクトの`vendor/bundle`以下にgemが格納されます。
次回以降はオプションを付けなくてもvendor/bundle以下に格納されるはずです。

プロジェクト別にgemをインストールすると、**プロジェクトごとのgemのバージョンの違いを気にすることがなくなります。**

最後に、Railsプロジェクトを作成します。

```
$ bundle exec rails new . -B　--skip-test
```

`.`を付けると現在のディレクトリに作成されます。

少しだけオプションの説明をすると、`-B`はRailsプロジェクト作成時にbundle installを行わないようにします。
また、`--skip-test`はデフォルトのminitestというテストを使わない時に付ける。他のテストフレームワークを利用したい時に使うといいです。
他のオプションは[ドキュメント](https://railsdoc.com/rails)を参考にするといいと思います。

プロジェクトにいる状態で、下記コマンドを実行して、http://localhost:3000/ へアクセスします。(サーバー起動)

```
$ rails server
```

Railsの画面が表示されれば、成功です。

<img width="676" alt="スクリーンショット 2020-02-23 11.54.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239560/e8b34729-d7e4-b28b-5124-24277a4a4e7c.png">

Cloud9はそこまで意識せずにプロジェクトが作れちゃうので、楽ですね！
ただ、環境構築で何が行われるのかを知るという意味ではやってみるのもいいかもしれません。
また、**実際の開発現場でCloud9を使ってというのはあんまりない**と思うので、できた方がいい気がします。

####補足
Rails6から`Webpacker`がデフォルトでインストールされます。
なので、`Webpacker`や`yarn`をインストールしないとサーバー起動時に失敗する場合があります。
その場合は、インストールしましょう。

```
// yarnを先にインストールしないとwebpackerをインストールできない
$ brew install yarn

$ rails webpacker:install
```

####参照
[Ruby初学者のRuby On Rails 環境構築【Mac】](https://qiita.com/TAByasu/items/47c6cfbeeafad39eda07)
[Rails6 Webpackerでエラーが出た](https://qiita.com/libertyu/items/1eb74adc817ab8971100)