gpt4 book ai didi

ruby-on-rails - 如何修复我的 UserMailer/Devise::Mailer 以满足 Rails 6 中的弃用警告?

转载 作者:行者123 更新时间:2023-12-05 06:18:13 27 4
gpt4 key购买 nike

我通过在 UserMailer 中继承它们来自定义 Devise 默认邮件程序,但这触发了弃用警告。我真的不明白它在告诉我什么。

DEPRECATION WARNING: Initialization autoloaded the constants Devise::Mailer, ApplicationHelper, and UserMailer.

Being able to do this is deprecated. Autoloading during initialization is going
to be an error condition in future versions of Rails.

Reloading does not reboot the application, and therefore code executed during
initialization does not run again. So, if you reload Devise::Mailer, for example,
the expected changes won't be reflected in that stale Class object.

These autoloaded constants have been unloaded.
# devise.rb

...
config.mailer = UserMailer
config.parent_mailer = 'ApplicationMailer'
...
# user_mailer.rb

class UserMailer < Devise::Mailer
helper :application
include Devise::Controllers::UrlHelpers
...
end

最佳答案

为了防止 DEPRECATION 警告,您可以在 config/application.rb 中需要这 3 个类(Devise::Mailer、ApplicationHelper 和 UserMailer)

我遇到了一个非常相似的错误消息:弃用警告:初始化自动加载常量 ApplicationRecord、Status 和 Task。

我是这样修复的:

# config/application.rb
. . .
module MyApp
class Application < Rails::Application
require "#{Rails.root}/app/models/application_record"
require "#{Rails.root}/app/models/concerns/status"
require "#{Rails.root}/app/models/task"
. . .

您看到 DEPRECATION 警告的原因是因为 Rails 6 默认使用 Zeitwerk 来加载依赖项,并且 Rails 提示的类,除非修复,否则很可能在未来的 Rails 版本中无法正确加载。

更多信息见: https://guides.rubyonrails.org/autoloading_and_reloading_constants.html

关于ruby-on-rails - 如何修复我的 UserMailer/Devise::Mailer 以满足 Rails 6 中的弃用警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61337419/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com