【Ruby on Rails 6.0~】開発環境で Action Text の実装 -- 【MySQL】

#経緯
Ruby on Rails で [**「Action Text」**](https://railsguides.jp/action_text_overview.html "「Action Text」")を実装した Web アプリケーションを開発する為に、試用版のテストアプリを作りました。[**「RDBMS」**](https://qiita.com/Taka20200105/items/c58ac4e610954c6d263b)は馴染みのある[**「MySQL」**](https://www.mysql.com/jp/products/enterprise/document_store.html "「MySQL」")を採用しています。今回の記事では、いくつものエラーに苦しみながら開発環境を構築する、ありがちな一例をご紹介します（本番環境は後日、別の記事にまとめる予定です）。ちなみに Docker を活用すると、こうした苦労が激減すると思います。
※各ツールの最新バージョンは、2020年8月30日時点です。



#やる事
- 必要なツールのバージョン策定とインストール
- web アプリケーション作成
- [**「Action Text」**](https://railsguides.jp/action_text_overview.html "「Action Text」")の実装
- 開発環境でアプリの動作確認
- 開発環境で他のアプリへの影響を確認




#必要なツール（◎ = 実装済み、★ = エラーに関与）
- ◎ [**「macOS Catalina」**10.15.4 （最新は10.15.6）](https://www.apple.com/jp/macos/catalina/ "macOS Catalina 10.15.4 （最新は10.15.6）")
- ◎ [**「homebrew」**2.4.14 （最新）](https://brew.sh/index_ja "homebrew（2.4.14　最新）")
- ◎ [**「rbenv」**1.1.2 （最新）](https://github.com/rbenv/rbenv "rbenv（1.1.2 最新）")
- **「Ruby」** 2.6.6 （安定？）
- ★ **「nodebrew」** 1.0.1（最新？）
- ★ **「node.js」** 11.5.0 （安定？）
- ◎ ★ **「openssl」** 1.0（？）→1.1
- ◎ ★ **「MySQL」**5.6.46（最新は8系）
- ◎ ★ **「ImageMagick」** 6.9.11-28 （最新） → 6.9.10-97 （安定？）
- ★ **「Ruby on Rails」** 6.0.3 （最新）
- ◎ **「bundler」**1.17.2（安定？）
- ★ **「mysql2」** 5.3 (最新) → 4.10 (安定？)
- [**「webpacker」**](https://rubygems.org/gems/webpacker)4.3.0（最新？）
- **「image_processing」**1.11.0（最新？）




#作業手順（▲ = エラーに関係している箇所）

1. ターミナルで作業用のフォルダへ移動

1. Rubyインストール

1. ▲ nodebrewインストール

1. ▲ node.jsインストール

1. gemfile 作成と編集

1. ▲ Railsと必要な gem（webpacker, mysql2, image_processing）のインストール

1. ▲ ImageMagickインストール（homebrew からインストールした事で最新版にアップデートされてしまった）

1. Rails アプリ作成

1. scaffold で必要なファイルを一括作成

1. Action Text の実装

1. ▲ model と controller と view などのファイルのコード書き換え

1. ▲ データベースのセットアップ

1. ▲ localhost サーバー起動と動作確認

1. ▲ 既存のアプリの開発環境の動作確認




#発生したエラーの整理
- **エラー①** ... インストール先のフォルダが見つからなかった。（手順３）
- **エラー②** ... 環境パスを通す為のシェルの種類が違った。（手順4）
- **エラー③** ... openssl が必要なバージョンではなかった。（手順6）
- **エラー④** ... サーバー接続後、「mysql2」のバージョンが不適切でアクセス不能のエラー。（手順6, 13）
- **エラー⑤** ... ActionText 投稿フォームのタイトルで使用する、データベースのカラムの型（string）の上限容量の不足。（手順11, 12）
- **エラー⑥** ... 既存のアプリからサーバー接続時、openssl のパスが通らなかった。（手順13, 14）
- **エラー⑦** ... 既存のアプリからサーバー接続時、 ImageMagick のバージョンが不適切で起動できなかった。（手順13, 14）




#エラー解決で参考にした記事
**【エラー①, ②（nodebrew と node.js）】**

- ***[「MacにNode.jsをインストール」（2020年06月29日更新）](https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09)***


**【エラー③, ④, ⑥（mysql2 と openssl）】**

- ***[「またお前か mysql2 gemのインストール失敗」（2019年11月15日）](https://qiita.com/park-jh/items/c594adfd56d3fe76bcbb)***
- ***[「Railsの環境構築時にLibrary not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib」 (LoadError)で苦しんだ（2020年02月09日）](https://qiita.com/yamazaki8934/items/48e65850873f3ecbee26)***
- ***[「【Rails】MySQL2がbundle installできない時の対応方法」（2019年04月11日）](https://qiita.com/fukuda_fu/items/463a39406ce713396403)***
- ***[「rails のサーバー立ち上げようとしたらセグフォした件」（2018年9月22日）](https://fumihumi.hatenablog.com/entry/2018/09/22/222920)***

**【エラー⑤（Ruby on Rails6系 と MySQL5系）】**

- ***[「RailsでiPhoneの絵文字対応する方法」（2014年10月20日）](https://qiita.com/ganezasan/items/2f22dbabe578d9b5c42b)***
- ***[「Mysql2::Error: Index column size too large. The maximum column size is 767 bytes」（2019年12月21日）【別の解決手段】](https://teratail.com/questions/230840)***
- ***[「MySQL に関わる Rails6.0 以降の変更点」（2019年05月02日）【因果関係】](https://qiita.com/taiteam/items/cb927d26e3601e75054b)***


**【エラー⑦（ImageMagick と rmagick）】**

- ***[「ImageMagick を古いものに変更する」（2015年10月26日）](https://qiita.com/akito19/items/bfc3e8be32fd265be9e6)***
- ***[「消してしまった Homebrew の過去バージョンをインストールし直してバージョンを固定する方法」（2017年06月23日）](https://qiita.com/DriftwoodJP/items/1bf05bc24b8e3bb0f6f4)***
- ***[「bundle installがrmagickでインストールできないのがImagemagick 7が原因の件 - `An error occurred while installing rmagick (2.16.0), and Bundler cannot continue`」（2018年3月24日）](https://www.tweeeety.blog/entry/2018/03/24/003104)***