#環境
ruby 2.5.1
rails 5.2.4
#背景
- docker環境を構築
- CircleCIを導入
- ローカル環境で CircleCI による rspec 実行がうまく作動するかテスト
- falseが多く、タイムアウトになったりする
- 問題の切り分けをするため、CircleCiではなく、普通にrspecコマンドを実行してみる
- 一週間前はなかったタイトルのエラーが発生
$ bundle exec rubocop --require rubocop-airbnb
...
...
...
Failure/Error: get article_url article
NameError:
uninitialized constant ActiveSupport::ParameterFilter
# ./spec/requests/articles_spec.rb:33:in `block (4 levels) in <top (required)>'
#結論
gem の"impressionist" のバージョンを変更したら、直りました。
# 変更前
gem 'impressionist'
# 変更後
gem 'impressionist', '~> 1.6.1'
docker や CircleCI を導入する前は正常に作動していたので、database.yml の変更内容や追加した gem などを変更前と比較して、原因を探っていました。
しかし、エラー内容からは問題箇所の特定が難しく、検索したところ以下の記事がヒットし、試したところ直りました。
uninitialized constant ActiveSupport::ParameterFilter
ActiveSupport::ParameterFilterはRails6以降pr#34039によって移動されたクラスです。
impressionistのようにgemによってはrails5以前とrails6以降で追加するべきバージョンが違う場合があります。