Techioz Blog

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 以上にアップグレードしてください。

関連するプルリクエストと問題: