Rails初心者の僕がRails6でActive Storageを使用し、漫画投稿アプリを開発してデプロイした過程（開発環境構築編）

※この記事は昔別アカウントで投稿した記事の移行版です。別アカウントを削除するにあたって移行しました。

## まず初めに
みなさんはじめまして、ほまりんと申します。初めてQiitaに記事を投稿します。今回は開発からデプロイするまでの全ての流れを、浅く、しかし丁寧に書いていくつもりをしているのですが、開発中、余裕がなく一切記録を取っていなかったため、曖昧なところや忘れている箇所が非常に多くありますがご了承ください（特にターミナルで入力したコマンドやエラー文）。なるべく僕のような初心者向けに書こうと思っております。困っている方の助けになれると幸いです。

## 本記事の構成
記事はいくつかに分けて投稿するつもりをしています。一つにまとめるにはあまりにも膨大だからです。今回は開発環境を諸々整えるところまで書きます。

## Rails6 とMySQL8.0を使おう
そう思ったのが苦労の始まりでした。ていうかMySQL8.0です。T◯◯H::EXPERTでは、MySQL5.6を使って開発を進めるのですが、5.7以降の方がユーザー名の文字数制限が長かったりと何かと都合が良く、更に8.0はめちゃくちゃ早いよ！とのことだったのでそれなら8.0を使おうと思い、8.0をインストール。brewでインストールするだけなので、ここまでは簡単でした。

### rails new でエラー
Rails6もMySQL8.0のインストールも終わり、意気揚々と

```
rails new -d mysql --skip-test
```
を実行！よし、作成してやるぜ！

An error occurred...

・・・え？

さて、ここからは、冒頭でも述べた通りエラー文等はほとんど覚えておりませんので、実際に行った解決策や何が問題だったのかを逐一説明していきます（説明のテキトーさは、今回とデプロイ周りが最も酷いです）。
#### 1. Gemfileに記載されているmysql2のgemの範囲

```ruby:Gemfile
gem 'mysql2', '<= 0.4.4'
```
確かこんなんだったと思います（数字はうろ覚え）。
これを

```ruby:Gemfile
gem 'mysql2', '>= 0.4.4'
```
こう。

・・・はい、向きを変えて新しいものに対応できるようにしただけです。
ここで一度`bundle install`を実行。が、

An error occurred...

ため息です。理由がわかりません。

#### 2. 次はopenssl
しかしこの時に出たエラー分をコピペして検索してみると、結構同じつまづきをしている人が多く、理論的にはわかりませんが解決策は見つかりました。どうやらopensslなるものに問題があるらしく

```
brew info openssl
```

をすると

```
openssl@1.1 is keg-only, which means it was not symlinked into /usr/local,
because openssl/libressl is provided by macOS so don't link an incompatible version.
```

こんなのが出てきます。どうやらこれが原因らしいです。詳しくは[macでmysql2がbundle installできない時](https://qiita.com/tatama/items/5e6c7c0ba1a2ba7ff9d3)という記事で書いてくださっているので、同じくMySQLでつまづいている人はご覧になってください。
解決策も上の記事に掲載されています。

さて、ここまで来れば同じくつまづいた人たちも解決しているようで、一安心一安心と、僕は次に行こうとして……

An error occurred...

発狂です。しかし今回は僕が完璧に悪かったです。

#### 3.環境変数
はい、元々TECH::E◯◯◯◯Tで環境変数を指定し、mysql5.6のpathを通していたので、そいつが変更されない限り8.0で動くはずがありません。この事実を僕はずっと忘れており、数時間単位で悩みました。環境変数は絶対に忘れないようにしましょう。

```~/.bash_profile
export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"
```
に変更、これでいけるはずです。

##### 初心者の方へ
`.bash_profile`が何なのかは各自調べてみてください。また、`.bash_profile`の編集の際は`vi`や`vim`コマンドを使って編集します。それらの使い方も、各自調べてみてください。

#### 4. 成功
さて、ここまで来ると晴れて成功し、無事エラーなく次の段階に進めるようになりました。

```
rails db:create
rails db:migrate
```
いつもの奴をします。
特にエラーはなく、

```
rails s
```
localhostが立ち上がりました。

##### P.S. 同じTECH::E◯◯◯◯T受講生や初心者の方へ補足
カリキュラムにしたがっていたり色々調べていると、

```
bundle exec rake db:create
```
みたいなのが出てきます。ですがこれらは全部無視して

```
rails db:create
bin/rails db:migrate
```
とかで大丈夫です。詳細な説明は省きますが、これで同じ処理を行ってくれるはずです（もし間違っていたら誰か指摘していただけると助かります）。
※Gemfileに`gem 'rails'`が入っている場合のみ。

## Webpackerを使おう
おそらく初心者の方には、あまり耳馴染みのない単語だと思います（webpackは聞いたことあるかも）。ですがこれはRails6以降標準搭載されており、Javascriptを使おうと思ったら改造しない限りは嫌でも使わせられる奴です。ここでyarnとかpackage.jsonとかどっかで聞くけどよく分からん奴らが登場します。
Railsの開発を行ううえでは、今すぐに深く知らなければならない、という訳ではないので、ここでは最低限のこと以外、説明を省きます。調べたい人は下の記事を参考にしてください。

[yarnとは](https://qiita.com/lelouch99v/items/c97ff951ca31298f3f24)
[webpack 4 入門](https://qiita.com/soarflat/items/28bf799f7e0335b68186)

### 最低限の説明
#### yarn
npmの強化版！早いしすごい！
（npmが何なのかは、各自ググってください）。

#### webpack
機能ごとに分割されたファイルをまとめたファイル！

### Q.じゃあWebpackerって何？
A.webpackをrailsに楽に導入するためのもの。

多分これぐらいの認識で構いません。webpackはすごい奴なのですが、それをrailsでも簡単に使えるようにするためのものがWebpackerです。

#### 調べたら、Webpackerはやめた方が良いって出てくるよ！
はい、将来的にはWebpackerをやめてWebpackに移す方が良いと思います。ですがとりあえず今回のような小規模のアプリを作るだけであれば、別にwebpackerで十分です。webpackへの移行に関する記事は以下が参考になるかもです。

[Rails環境でJS , CSSをwebpackで完全に管理する](https://qiita.com/geek_shanshan/items/8f348734d95d9ece9576)

また、webpackerを使う際には、一読しておくと良い記事が下の記事です。

[Webpacker使うなら最低限これだけは知っておいてほしいこと](https://qiita.com/chimame/items/8d3d6f4afea675cffa7d)

いよいよ他人の記事を載せすぎて僕の記事ではなくなってきましたね。

### とにかくWebpackerを使う
とりあえずyarnをインストールしましょう。Webpackerを使うためには、yarnが必要です。npmでインストールするパターンとhomebrewでインストールするパターンがあるのでお好みの方を選んでください。

##### npm
[yarnをインストールする](https://qiita.com/suisui654/items/1b89446e03991c7c2c3d)

##### homebrew
[Macにhomebrewでyarnをインストールする（macOS Catalina）](https://qiita.com/hoken/items/762033ad49f3552be2bd)

次にwebpackerのインストールですが、先ほども述べた通り、Rails6にはwebpackerが標準搭載されているので最初の時点でインストールされています。ですが一応、インストールされていなかったときのためにwebpackerインストールのコードを書いておきます。

```
rails webpacker:install
```
これでOKです。順序としてはyarn→webpackerの順にインストールすることになるので、`rails new`するよりも先にインストールしておくと良い気がします・・・（自分は元々されてた）。

## これにて開発環境構築編終わりです
次から実際の開発部分の記事に入っていきます（設計とかもろもろ）。初心者らしくミスがありまくりなので、あまり参考にしようとはせず、気軽に読んでいただけたらと思います。

ではまた次回！

[設計編へ→](https://qiita.com/homarinn1230/items/8a8efed01f81c61f45e6)