使用 ruby 3.0 运行任何任务时如何修复"class variable @@debug_missing_translation of ActionView::Base is overtaken



我正在尝试将Rails 6.1.3.1应用程序从Ruby 2.6.6升级到3.0.0

所有的rspec测试都运行良好,开发中的一切似乎都很好,除了一件事:即使是最简单的任务也会出现以下错误:"ActionView::Base的类变量@@debug_missing_translation被Object覆盖">

例如,这个simpletask.rake文件

task simpletask: :environment do
puts 'Hello'
end

无法运行,因为我得到以下错误:

lxxx@xxx:~/Workspace/edumino$ rails simpletask
rails aborted!
class variable @@debug_missing_translation of ActionView::Base is overtaken by Object
/home/xxx/railsapp/config/environment.rb:5:in `<top (required)>'
/home/xxx/railsapp/bin/rails:5:in `require'
/home/xxx/railsapp/bin/rails:5:in `<top (required)>'
/home/xxx/railsapp/bin/spring:10:in `require'
/home/xxx/railsapp/bin/spring:10:in `block in <top (required)>'
/home/xxx/railsapp/bin/spring:7:in `<top (required)>'
Tasks: TOP => simpletask => environment
(See full trace by running task with --trace)

。。。所以,事实证明,这个问题是一个已经存在的任务。我不记得为什么这是必要的,但任务是这样的:

# frozen_string_literal: true
require "#{Rails.root}/app/helpers/cron_helper"
require "#{Rails.root}/app/helpers/notifier_helper"
require "#{Rails.root}/app/helpers/application_helper"
include ApplicationHelper
include ActionView::Helpers::TranslationHelper
include CronHelper
namespace :cron do
task sms: :environment do |_t, _args|
...
end
end

我认为有罪代码包括ActionView::Helpers::TranslationHelper

再说一遍,我不记得当时我为什么要这么做了。但是,如果你在升级到Ruby 3.0时遇到这种"被超越"的错误,请检查你的其他任务,看看你可能有什么奇怪的包含。就我而言,由于我不需要旧任务,我只是删除了它。

相关内容

  • 没有找到相关文章

最新更新