Rails6でのRubyOnRails 環境構築

#はじめに
RubyOnRailsの導入方法です。
エラーが起こってわかりにくかったところをまとめます。

# 開発環境等
<ul>
<li>macOS Mojave version 10.14.6</li>
<li>Ruby 2.6.4</li>
<li>Rails 6.0.0</li>
<li>rbenv local 2.6.4</li>
<li>sqlite3 3.29.0</li>
</ul>
# Homebrewのインストール

入っていない人は次のコマンドをコピペしてインストールしてください。

```bash:Homebrewのインストール
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
[macOS用パッケージマネジャー — homebrew](https://brew.sh/index_ja)

次にHomebrewをupdateします

```bash:Homebrewのアップデート
$ brew update
```

# rbenvのインストール
rbenvを使うと複数のバージョンのrubyを管理できるようになります。
ruby-buildはRubyをバージョンごとに異なるディレクトリにビルドするためのツール

```bash:rvenvのインストール
 $ brew install rbenv ruby-build
```

環境変数のPATHにディレクトリを登録しておくと登録したディレクトリ直下のスクリプトが絶対パスで指定しなくても実行できるようになります。

```bash:.bash_profileの設定
$ echo 'export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
```

# Ruby2.6.4のinstall

インストールできるrubyのバージョンを確認する

```bash:バージョンの確認
$ rbenv install -l
```

僕はruby2.6.4が最新だったのでそれをインストールしました。

```bash:ruby2.6.4のinstall
$ rbenv install 2.6.4
```

システム全体でつかうRubyとして登録して置きたいのでそれも設定

```
$ rbenv global 2.6.4
```
インストールしたRubyを使用可能にするためにrehash

```
$ rbenv rehash
```

複数のバージョンをインストールする場合は繰り返しコマンドの実行を行う

# Railsのinstall

RailsはWebアプリケーションフレームワークです。これもインストールしていきます
(注:2.5.0以降のVersionでしかRailsは動きません!!!)

##  1.bundlerのインストール

まずbundlerをインストールします。gemコマンドではなくbundlerコマンドでパッケージをインストールすることでバージョンの互換性の問題を解決できます。

PermissionError言われたのでsudoさん使って実行

```bash:bundlerのインストール
$ sudo gem install bundler
```

## 2.sqlite3のアップグレード
Railsを利用するためにはsqlite3をインストールしている必要があります。macにはデフォルトで入っているのでアップグレードします。あとはシンボリックリンクを作成してパスを通す。
RailsのデフォルトのDBはsqliteですのでmysqlを使いたい人は切り替えて使う。

```
//現在のバージョンの確認
$ sqlite3 --version
3.24.0

//sqlite3のアップグレード
$ brew upgrade sqlite3

//最新バージョンの確認
$ ls /usr/local/Cellar/sqlite/
3.29.0

//シンボリックリンクの作成
$ cd /usr/local/bin/
$ ln -sf ../Cellar/sqlite/3.29.0/bin/sqlite3 ./

//PATHを通す
$ echo 'export PATH=/usr/local/bin:"$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

//変更できたか確認
$ sqlite3 --version
3.29.0
```


## 3.作業用ディレクトリへのgemのインストール
作業用ディレクトリの作成を行う

```bash:作業用ディレクトリの作成
$ mkdir ~/workspace
$ cd ~/workspace
```

Rubyのバージョンの指定

```
$ rbenv local 2.6.4
```
ruby '~> 2.6.4'を追加し、Gemfileのgem "rails"の コメントアウトを外す(バージョンは自分が入れたバージョンに変える)

```bash:GemFileの作成
$ bundle init

Writing new Gemfile to /Users/<ユーザ名>/workspace/Gemfile
```
```bash:Gemfileの編集
$ vim /Users/<ユーザ名>/workspace/Gemfile

ruby '~> 2.6.4'

# frozen_string_literal: true
  
source "https://rubygems.org"

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

gem "rails"
```

railsをインストールする

```bash:Railsのインストール
$ bundle install --path=vendor/bundle
$ bundle exec rails -v
Rails 5.2.3
```
## bundle install --path=vendor/bundleでバージョンエラーが起こる場合の対処方法
試しにブログアプリケーションを作成して動作確認を行ったところbundleがsystemのrubyを参照していたため失敗。雑だがファイルを無理やり移動させてパスを変更したらうまくいった。

```
bundleとbundlerのPATH
$ which bundle bundler
/usr/local/bin/bundle
/usr/local/bin/bundler 

変更
$ mv /usr/local/bin/bundle /Users/<ユーザ名>/.rbenv/shims/bundle 
$ mv /usr/local/bin/bundler /Users/<ユーザ名>/.rbenv/shims/bundler

$ which bundle bundler
/Users/<ユーザ名>/.rbenv/shims/bundle
/Users/<ユーザ名>/.rbenv/shims/bundler
```


## 4.サーバーの起動
Rails6を使う場合は[# environment is not defined in config/webpacker.ymlが出る時]
(# environment is not defined in config/webpacker.ymlが出る時(Rails6を使う場合必須))を行う。場合によっては[can't find gem railtiesが出る時](# can't find gem railtiesが出る時)を行う。

```bash:サーバーの起動
$ bundle exec rails new blog
$ cd ~/workspace/blog
$ rails server<img width="752" alt="スクリーンショット 2019-10-02 2.10.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505843/cdbc5838-e114-0e7a-ea42-a258ae3cc5fc.png">
<img width="752" alt="スクリーンショット 2019-10-02 2.10.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505843/47e9ad5d-4e44-f551-6387-49bbf56b0f5b.png">

=> Booting Puma
=> Rails 6.0.0 application starting in development 
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.4-p104), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop

```

## can't find gem railtiesが出る時
パスを変えて実行したところ can't find gem railtiesと言われたのでreailtiesのインストールを行った。

```bash:一覧表示
$ gem list
```

reailtiesがなければgemでrailsをインストールする。

```bash:railsのインストール
$ gem install rails
```

## environment is not defined in config/webpacker.ymlが出る時(Rails6を使う場合必須)

Rails6.0.0ではwebpackerのインストールが必要。インストールしていない場合はenvironment is not defined in config/webpacker.ymlとエラーが出るはず。webpackerのインストールにはyarnのインストールが必要となるのでインストールしていない場合はこちらも。

```bash:yarnのインストール
$ brew install yarn
```

```bash:webpackerのインストール
$ bundle exec rails webpacker:install
```

---
http://localhost:3000/ にアクセスしてYay! You’re on Rails!の画面が表示されRuby versionが2.6.4かどうか確認
<img width="752" alt="スクリーンショット 2019-10-02 10.43.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505843/0c000c90-05c4-af7a-e70f-55b6f59a4cec.png">
# 参考サイト
[Ruby初学者のRuby On Rails 環境構築【Mac】](https://qiita.com/TAByasu/items/47c6cfbeeafad39eda07)
[Rails をはじめよう - Railsガイド](https://railsguides.jp/getting_started.html)
[Bundlerの使い方](https://qiita.com/oshou/items/6283c2315dc7dd244aef)
[MacのpyenvでHomebrewからインストールしたsqlite3を利用する](https://dot-blog.jp/news/mac-pyenv-homebrew-install-sqlite3-use/)