[Rails] 環境構築 rails new rails serverまで

# 概要

・Ruby on Railsのインストール
・railsアプリの新規作成

実行マシンは Mac OS high Sierraです。

# インストールするもの（大事な物）

Homebrew
　・Macにソフトをインストールする時の手順を簡単にしてくれるもの。

rbenv 
　・homebrew経由でインストールする。
　・rubyのバージョン管理マネージャー,プロジェクトごとにRubyのバージョンを管理する。

Ruby
　・rbenv経由でインストールする。
　・Ruby単独でインストールできるが、rbenvでRubyバージョンを使い分ける（切り替える）ので、rbenv経由でインストール。

Bundler
　・RubyGems経由でインストールする（Bundlerはgem）。
　・プロジェクトごとに使用するRailsやgem等のバージョンを決めるために使用する。
Rails 
　・railsはgem。
　・bundler経由でインストールする。

※Command Line Toolsが必要と言われることがありますが、現在はインストールしていなくてもいいようです。


# インストール手順

## Homebrewのインストール

インストールコマンド
最新のコマンドは、https://brew.sh/index_ja で確認してください。

```
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```


brewのバージョン確認


```
$ brew -v
Homebrew 1.8.5
Homebrew/homebrew-core (git revision 0b33e; last commit 2018-12-13)
```

pathの設定

```
$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
```
書き込み先は.bashrcの場合もありますので、適宜読み替えて下さい。

※参考サイト
http://qiita.com/vintersnow/items/fca0be79cdc28bd2f5e4

## rbenvのインストール

インストールコマンド

```
$ brew install rbenv
```

PATHの設定

```
#PATHを通す
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
#rbenvを使うには、rbenv init -というコマンドが毎回必要
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

# 環境のリロード
$ source ~/.bash_profile
```

参考：https://github.com/rbenv/rbenv#installation
     rbenv init https://github.com/rbenv/rbenv/blob/master/libexec/rbenv-init

## Rubyのインストール


具体的なインストール方法は新規アプリの作成のところで説明します。

```
参考：複数バージョンのインストールと切り替え

# Rubyインストールリストの更新
$ brew upgrade ruby-build

# インストール
$ rbenv install -l
$ rbenv install [バージョン]

# アンインストール
$ rbenv uninstall [バージョン]


$ rbenv local [バージョン]
 #=> 特定のRailsプロジェクトなどに適用する場合に選択する
 #=> 事前に指定したいRailsプロジェクトに移動しておく
※globalよりloacalのバージョンが優先される

# リフレッシュ
$ rbenv rehash

# インストールされているバージョンの確認
$ rbenv versions
```

## bundlerのインストール

Bundlerがインストールされているか確認する。

```
$ bundle -v
Bundler version 1.15.3
```

インストールコマンド
※ 「rbenv exec」を付けることで、rbenvで適用されているRubyのgemを明示的に実行している。
※　rbenv経由でインストールしているRubyバージョン全てで、Bundlerのインストール作業が必要。

```
$ rbenv exec gem install bundler
```


Rubyのバージョンを切り替えるには
 
```
$ rbenv local 2.4.0
```


#新規Railsアプリの作成

###アプリを作成したい任意のディレクトリに移動

```
$ mkdir [任意のディレクトリ名]
$ cd [任意のディレクトリ名]
```

###Rubyのバージョンを指定
新規アプリで使うrubyのバージョンをここで指定します。
.ruby-versionというファイルが作られます。


```
[任意のディレクトリ名]$ rbenv local 2.4.1
#ディレクトリの中身を確認
[任意のディレクトリ名]$ ls -la
-rw-r--r--  1 username  staff    6  8 26 07:11 .ruby-version
```

###bundle initでGemfileファイルを作成


```
[任意のディレクトリ名]$ bundle init
# ディレクトリにgem "rails"が記載されたGemfileができる

[任意のディレクトリ名]$ more Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
 
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
 
# gem "rails"　<-ここを編集
```

###Gemfileを編集

```
先程作ったGemファイルの# gem "rails"から'#' を消す（gem "rails", "5.0.5"みたいな感じでversion指定もできる）
```



###bundlerを使ってrails newするのに必要なgemをインストールする
bundleコマンドでrails gemをディレクトリにインストールGemfile.lockが作成される。またvendor/bundleにrails new用のgemをインストールするために、--path .vendor/ をつける。

```
$ bundle install --path .bundle/
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 12.0.0
.
.
.
Installing rails 5.1.3
Bundle complete! 1 Gemfile dependency, 38 gems now installed.
Bundled gems are installed into ./vendor/bundle.
```

###やっと、Railsアプリを作成する
※  bundle installをスキップしている。何もオプションをつけずにrails newを実行すると、bundle installが自動的に走る。そのためグローバルな gem環境が汚れてしまうので、--skip-bundleオプションをつけることでbundle installが走るのを止めている。

```
$ bundle exec rails new MyApp --skip-bundle
```


###rails newするためにローカルインストールしたrailsを削除
MyAppを作成するため使ったGemたちはもう必要ないので、削除してしまう。

```
$ rm -f Gemfile*
$ rm -rf .bundle
```

###MyApp内に移動し、gemをbundlerでアプリ内にローカルインストール
ここでやっとプロジェクトに必要なgemをローカルにインストールする。
こうすることで、プロジェクトごとにgemを使い分けることが出来る。

```
$ bundle install --path vendor/bundle
```
gemのインストールが完了したらアプリが動くか確認するためにserverを起動

```
$ bundle exec rails server
```

ブラウザで以下にアクセス

```
localhost:3000
```
<img width="1022" alt="スクリーンショット 2018-12-15 19.13.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/248571/aaeb2a9e-de83-593b-4249-8a61ce2c00b0.png">
このような画面が表示されればOKです。
お疲れ様でした！

# 参考
https://railstutorial.jp/chapters/beginning?version=5.1#cha-beginning
https://brew.sh/index_ja
https://github.com/rbenv/rbenv
https://www.qoosky.io/techs/8a0f1d8d9e
https://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/