2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rspec実行時に "NameError:uninitialized constant ActiveSupport::ParameterFilter"

Last updated at Posted at 2020-09-05

#環境
ruby 2.5.1
rails 5.2.4

#背景

  1. docker環境を構築
  2. CircleCIを導入
  3. ローカル環境で CircleCI による rspec 実行がうまく作動するかテスト
  4. falseが多く、タイムアウトになったりする
  5. 問題の切り分けをするため、CircleCiではなく、普通にrspecコマンドを実行してみる
  6. 一週間前はなかったタイトルのエラーが発生
$ 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以降で追加するべきバージョンが違う場合があります。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?