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

标签 ruby-on-rails devise ruby-on-rails-6

我通过在 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/

相关文章:

ruby-on-rails - Rails 6 中的自动加载和 Zeitwerk 模式

webpack - 轨道和网络包 : How do I call functions in application pack?

ruby-on-rails - Rails 5.2 使用 Axios 请求返回 406

ruby-on-rails - 设计 omniauth-facebook redirect_uri Url 必须是绝对的

ruby-on-rails - 设计注册功能

ruby-on-rails - 如果用户未经授权,如何使用设计发送 CORS header (401 响应)

ruby-on-rails - 如何测试依赖于 Devise signed_in 的 Rails 5 助手? helper ,用 Minitest?

ruby-on-rails - 无法解密config/credentials.yml.enc。也许您输入了错误的 key ?

ruby-on-rails - 我对 "Failed to build gem native extension"感到绝望

javascript - 在不使用任何框架的情况下仅使用 ruby​​ 创建 Web 应用程序