4ヶ月振りにポートフォリオに触ったらRSpecとHerokuのデプロイでエラーが出た話

# はじめに
エンジニアとして働き始めて早くも4ヶ月経ちました。

7月に入ってから業務でデータ分析基盤の構築に携わることになり、Fluentd、Embulk、ElasticSearch等を勉強する必要性が出てきたため、それらを勉強するための実験場として転職活動時に作成した[ポートフォリオ](https://tranquil-ravine-25204.herokuapp.com/)を利用しようと思い、4ヶ月振りに触ったのですが、webdriverとHerokuでガッツリはまってしまったので誰かの参考になればと思い、久々に記事を書くことにしました。

# 前提
- macOS Mojave
- Ruby 2.5.0
- Rails 5.2.2

# 要点
## RSpecでのエラー
何点かファイルを変更したのでテストを走らせたらフィーチャースペックで見事に全コケしてて、何事だろうと思ってエラー内容を確認したところ、下記のようなエラーでした。

```
Selenium::WebDriver::Error::SessionNotCreatedError:
session not created: Chrome version must be between 70 and 73
```

Chromeのバージョンが70~73の間に入ってないぞという話なので、使用しているChromeのバージョンを調べたところ、`75.0.3770.100`とのことだったので、これが原因と分かりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307533/7761e160-a0c7-fe93-1767-f481c6a836ce.png)

更に調べていくと、`chromedriver-helper gem`は廃止予定らしく、`webdrivers gem`を使えば良いとのことだったので、一旦Gemfile.lockを削除して`bundle install`を実行した後、再度テストをするとテストが通るようになりました。
（ちなみに、この時はこのGemfile.lockを作り直す作業が、後述するHerokuエラーに繋がることなど知る由もありませんでした。）

```ruby:Gemfile
-   gem 'chromedriver-helper'
+   gem 'webdrivers', '~> 3.0'
```

- 参考URL：[session not created: Chrome version must be between](https://qiita.com/hirono_95/items/3e886efcc09faeeb4b0b#rails%E3%81%A7rspec%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%9F%E6%99%82%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%A2)

## Herokuデプロイでのエラー
テストが通ったので最後にデプロイして終わりだーと思ったのですが、またしてもここでエラーに見舞われました。
エラーの内容は下記の通りです。

```bash
remote:        Activating bundler (2.0.2) failed:
remote:        Could not find 'bundler' (2.0.2) required by your /tmp/build_be01b72423bcb8427f9483fee7b4337e/Gemfile.lock.
remote:        To update to the latest version installed on your system, run `bundle update --bundler`.
remote:        To install the missing version, run `gem install bundler:2.0.2`
remote:        Checked in 'GEM_PATH=vendor/bundle/ruby/2.5.0', execute `gem env` for more information
remote:
remote:        To install the version of bundler this project requires, run `gem install bundler -v '2.0.2'`
remote:
remote:  !
remote:  !     Failed to install gems via Bundler.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to tranquil-ravine-25204.
```

何やら`Activating bundler (2.0.2) failed`とのことで、`gem install bundler`が上手くいかないとのことです。

以前動いていた時のbundlerのバージョンは何だったっけと思い、自分のポートフォリオの過去のブランチ中にあるGemfile.lockの最後の行を見ると、

```
BUNDLED WITH
   2.0.1
```

となっていたので、再度Gemfile.lockを削除して`bundle _2.0.1_ install`を実行して、herokuへのデプロイをしてみると解決しました。

ちなみに、調べてみたところ何やらbundler2.0.2はつい先月リリースされたものらしく、その辺が影響しているっぽいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307533/c5109add-e4dc-1984-5dd6-d8281b0a8e60.png)

- 参考URL：[Heroku installs Bundler then throws error Bundler 2.0.1](https://stackoverflow.com/questions/56680065/heroku-installs-bundler-then-throws-error-bundler-2-0-1)


## （おまけ）その他
Faker gemも更新されていたようで、seedデータを入れようとしたら「`Faker::OnePiece`なんて知らないよ」と怒られました。
公式ドキュメントを見たら`Faker::JapaneseMedia::OnePiece`とする必要があるとのことが分かったので修正したら解決しました。

- 参考URL：[Faker::JapaneseMedia::OnePiece](https://github.com/stympy/faker/blob/master/doc/japanese_media/one_piece.md)


# まとめ
当たり前のことですが、たった4ヶ月でもソフトウェアは進化しているのだなぁと改めて感じた体験でした💡
この記事で同じミスで時間を奪われる人が減れば幸いです。