2
0

More than 3 years have passed since last update.

RSpec 実行時に `Failure/Error: require File.expand_path` のエラーが出た

Last updated at Posted at 2021-06-05

bundle exec rspec 実行時に Failure/Error:なるエラーが出ました。

エラーメッセージの詳細はこちらです。

An error occurred while loading ./spec/requests/todo_spec.rb.
Failure/Error: require File.expand_path('../config/environment', __dir__)

FrozenError:
  can't modify frozen Array: ["/usr/src/app/app/channels", "/usr/src/app/app/controllers", "/usr/src/app/app/controllers/concerns", "/usr/src/app/app/jobs", "/usr/src/app/app/mailers", "/usr/src/app/app/models", "/usr/src/app/app/models/concerns", "/usr/local/bundle/gems/actiontext-6.1.3.2/app/helpers", "/usr/local/bundle/gems/actiontext-6.1.3.2/app/models", "/usr/local/bundle/gems/actionmailbox-6.1.3.2/app/controllers", "/usr/local/bundle/gems/actionmailbox-6.1.3.2/app/jobs", "/usr/local/bundle/gems/actionmailbox-6.1.3.2/app/models", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/controllers", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/controllers/concerns", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/jobs", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/models"]

Rails : RuntimeError - can't modify frozen Array when running rspec in rails

色々と検索しても、エラーの原因にピンポイントで当たる可能性は低いと思います。
少なくとも自分の場合は検索したどの記事も問題の解決にはつながりませんでした。

環境を見直す

Dockerがちゃんと上げてるか?

データベースコンテナを上げ忘れていないか確認します。

自分はDockerコンテナが上がってなかったので立ち上げました。

$ docker-compose up

テーブルがちゃんと作られているか?

test環境用のテーブルが作られているか?

FactoryBot に問題はないか?
自分の場合はspec/factories以下の書き方に問題があったので直しました。

# bin/rails db:migrate RAILS_ENV=test
rails aborted!
NoMethodError: undefined method 'done' in 'item' factory
Did you mean? 'done { false }'

ここまで確認したらbundle exec rspec自体は動くようになりました。

config 以下のファイルに変な修正を入れてないか?

検索して出てくる記事では config/application.rb などに変な修正を入れて挙動がおかしくなった人が多いようでした。

デフォルトのファイルから何かおかしな修正を入れていないか。
インストールした Gem に不備はないか、などの設定・定義周りを確認するのがいいと思います。

環境か設定に原因がある可能性が高いはずです。

2
0
0

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
0