Rails 7 Ruby 3.1 LoadError: そのようなファイルをロードできません – net/smtp
概要
Rails 7 と Ruby 3.1 にアップグレードしました。 rspec でテストを実行しようとすると、以下のエラーが発生しました。どうすれば修正できますか?
An error occurred while loading rails_helper.
Failure/Error: require File.expand_path('../config/environment', __dir__)
LoadError:
cannot load such file -- net/smtp
# .../gems/mail-2.7.1/lib/mail.rb:9:in `<module:Mail>'
# .../gems/mail-2.7.1/lib/mail.rb:3:in `<main>'
# .../bundler/gems/rails-6a0f6c4d70b1/actionmailbox/lib/action_mailbox/mail_ext.rb:3:in `<main>'
# .../bundler/gems/rails-6a0f6c4d70b1/actionmailbox/lib/action_mailbox.rb:3:in `<main>'
# .../bundler/gems/rails-6a0f6c4d70b1/actionmailbox/lib/action_mailbox/engine.rb:9:in `<main>'
# ./config/application.rb:11:in `<top (required)>'
# ./config/environment.rb:2:in `require_relative'
# ./config/environment.rb:2:in `<top (required)>'
# ./spec/rails_helper.rb:4:in `require'
# ./spec/rails_helper.rb:4:in `<top (required)>'
(bootsnap と zeitwerk はバックトレースから除外されます)
解決策
gem ‘net-smtp’、require: false を Gemfile に追加し、バンドルを実行します。
同様に、net-imap と net-pop にも問題がある可能性があるため、新しい mail gem バージョンがリリースされるまで追加する必要があると思います。
gem 'net-smtp', require: false
gem 'net-imap', require: false
gem 'net-pop', require: false
UPD: 修正を含む mail gem バージョン 2.8.0 が 2022 年 12 月 3 日にリリースされました。 2.8.0 以上にアップグレードしてください。
2022 年 1 月 6 日に、Rails 7.0.1 がリリースされました。
Ruby 3.1 関連の問題の中でも特に、この問題に対する修正がもたらされました。したがって、Rails 7.0.1 以上にアップグレードしてください。
関連するプルリクエストと問題: