运行一个rails 7.0.x应用程序,每当它引用app/models
中的Model类时都会遇到uninitialized constant
错误
所以我在纽约有一个服务班
app/services/sales_service.rb
服务级别:
class SalesService
def gensalesdata
print "TESTING: #{AuthorSale.last} \n"
end
end
它由rake任务调用:
task :testtask1 do
SalesService.new.gensalesdata
end
它正在调用一个名为AuthorSale
的基本模型文件,该文件位于
app/models/author_sale.rb
模型文件编码为:
class AuthorSale < ApplicationRecord
end
即使我从服务类执行一个简单的AuthorSale.last
调用,我也会收到该错误:
uninitialized constant SalesService::AuthorSale
- 运行了
bin/rails zeitwerk:check
判断,结果返回Hold on, I am eager loading the application. All is good!
响应 -
config/environments/development.rb
文件中设置了config.eager_load = true
- 我在So上看了几十个类似的帖子,但似乎没有一个能解决我的问题.
- MySQL中的底层表名为
author_sales
- 更奇怪的问题是,如果我从Rails控制台调用它,同样的代码也能很好地工作.如果代码是通过Rake任务从命令行运行或从Web服务器运行,它将停止工作
最新情况:
- 在调试过程中发现了另外两个问题,当我将其添加到
config/environments/development.rb
时:
config.eager_load = true
print "#{ActiveSupport::Dependencies.autoload_paths}"
即使将RAILS_ENV
设置为development
,该流也不会进入该文件
当我在服务类文件内打印出相同的ActiveSupport::Dependencies.autoload_paths
时,它会打印出一个空数组,这进一步证明应用程序无法找到/加载app/models
个文件中的任何一个
我错过了什么?