Ser*_*eev 80 ruby ruby-on-rails ruby-on-rails-7 ruby-3.1
我升级到 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)>'
Run Code Online (Sandbox Code Playgroud)
(bootsnap 和 zeitwerk 被排除在回溯之外)
Ser*_*eev 162
添加gem 'net-smtp', require: false到您的Gemfile并运行bundle.
同样,我假设您可能遇到net-imap和问题net-pop,因此必须添加它们,直到mail发布新的gem 版本。
gem 'net-smtp', require: false
gem 'net-imap', require: false
gem 'net-pop', require: false
Run Code Online (Sandbox Code Playgroud)
更新:邮件 gem 版本 2.8.0 于 2022 年 12 月 3 日发布,其中包含修复程序。只需升级到 >= 2.8.0。
2022 年 1 月 6 日,Rails 7.0.1发布:
此版本的重点是支持 Ruby 3.1
在其他与 Ruby 3.1 相关的问题中,它修复了这个问题。因此升级到 Rails >= 7.0.1。
相关拉取请求和问题:
Siw*_*申思维 14
我在生产模式下运行 Rails 时遇到了同样的问题。(Ruby 3、Rails 6.1)
复制这行代码并将其粘贴到Gemfile:
gem 'net-smtp', require: false
gem 'net-imap', require: false
gem 'net-pop', require: false
Run Code Online (Sandbox Code Playgroud)