メール動作確認でmailcatcherインストールする

#はじめに
「[Ruby on Rails5　速習実践ガイド](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E5%A0%B4%E5%AF%A7%E5%AD%90/dp/4839962227/ref=pd_lpo_14_t_0/358-7688472-4798337?_encoding=UTF8&pd_rd_i=4839962227&pd_rd_r=a12eb866-5705-43d9-ade5-337027e22365&pd_rd_w=bWxAO&pd_rd_wg=IwTcZ&pf_rd_p=cb2cef9d-b0a3-4b58-a575-45abfc5e07e8&pf_rd_r=5KXTNYCWFK719GBY9N4M&psc=1&refRID=5KXTNYCWFK719GBY9N4M)」を参考にRailsの勉強しております。
メール送信の確認をするためにmailcatcherをインストールしようと試みたのですが、失敗しそのときの解決策を記事にしております。

#環境

* Mac
* Ruby 2.7
* Rails 6.1

#mailcatcherのインストール失敗
mailcatcherをインストールするために、コマンドを叩くも失敗。
エラーログは下記になります。

```
$ sudo gem install mailcatcher
Building native extensions. This could take a while...
ERROR:  Error installing mailcatcher:
	ERROR: Failed to build gem native extension.

    current directory: /Users/***/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/thin-1.5.1/ext/thin_parser
/Users/***/.rbenv/versions/2.7.2/bin/ruby -I /Users/***/.rbenv/versions/2.7.2/lib/ruby/2.7.0 -r ./siteconf20210207-88991-1gmlkea.rb extconf.rb
checking for main() in -lc... yes
creating Makefile

current directory: /Users/***/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/thin-1.5.1/ext/thin_parser
make "DESTDIR=" clean

current directory: /Users/***/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/thin-1.5.1/ext/thin_parser
make "DESTDIR="
compiling parser.c
parser.rl:112:17: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare]
  assert(pe - p == len - off && "pointers aren't same distance");
         ~~~~~~ ^  ~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/assert.h:93:25: note: expanded from macro 'assert'
    (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __FILE__, __LINE__, #e) : (void)0)
                        ^
parser.rl:142:7: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  if (thin_http_parser_has_error(parser) ) {
      ^
parser.rl:142:7: note: did you mean 'http_parser_has_error'?
./parser.h:44:5: note: 'http_parser_has_error' declared here
int http_parser_has_error(http_parser *parser);
    ^
parser.rl:144:14: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  } else if (thin_http_parser_is_finished(parser) ) {
             ^
1 warning and 2 errors generated.
make: *** [parser.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/***/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/thin-1.5.1 for inspection.
Results logged to /Users/***/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-20/2.7.0/thin-1.5.1/gem_make.out
```

mailcatcherのインストールが失敗しているので、mailcatcherの起動もうまくいきません。

```
$ mailcatcher
-bash: mailcatcher: command not found
```

# 解決策
下記コマンドでインストールできます（確認済み）。

```
$ gem install thin -v '1.5.1' -- --with-cflags="-Wno-error=implicit-function-declaration"
$ gem install mailcatcher
```
インストールが失敗していた原因は`thin`が未インストールだったため、thinをインストールするようにしています。

mailcatcherのインストールが成功すれば、正常に起動します。

```
$ mailcatcher
Starting MailCatcher
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080/
*** MailCatcher runs as a daemon by default. Go to the web interface to quit.
```

**参考**
[Installation Fails on Catalina #430](https://github.com/sj26/mailcatcher/issues/430)