ruby-on-rails - 元编程 rake 任务时,.rake 文件中的模型不可用
问题描述
我正在尝试根据数据库记录生成一组 rake 任务,但我的模型不可用
rake aborted!
NameError: uninitialized constant Report
当然,我不会尝试在 rake 任务中使用它,因为我需要在命名任务之前已经拥有它。是否有任何理由在该范围内默认不可用?
要求app/models/report
只是导致
rake aborted!
NameError: uninitialized constant ApplicationRecord
如果我需要app/models/report
and app/model/application_record
,我会得到
rake aborted!
ActiveRecord::ConnectionNotEstablished: No connection pool with 'primary' found.
这使得我看起来像是要解开通常自动为我们处理的自动加载的长链。
(我在一个带有 的 Rails 6.0 应用程序中config.load_defaults 5.2
,所以它仍然使用经典自动加载,如果这很重要的话。)
解决这个问题的最直接的方法是什么,以便我拥有我需要的东西?
(我意识到这些东西可能是故意被排除在这个范围之外以使它们变得rake -T
更快,并且使它们可用会产生成本,但我想尝试一下,看看性能如何,并决定它是否值得做或不做。)
更新:
到目前为止,追查所有错误,我的report.rake
文件以
require_relative "../../app/models/application_record"
require_relative "../../app/models/report"
require "active_record"
ActiveRecord::Base.establish_connection(YAML.load_file("#{Rails.root}/config/database.yml")[Rails.env])
task_list = Report.pluck(:task)
我被困在
rake aborted!
ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.004 seconds); all pooled connections were in use
解决方案
推荐阅读
- r - 拆分具有“|”的行 使用单独() fn 未拆分
- javascript - 隐藏没有类的项目
- javascript - 在 WSO2 ESB 中,我想将我的日期对象转换为特定时区
- python - Pandas If else 为空
- xaml - 如何在 uwp 中设置评级星的宽度和高度?
- angular - Angular formGroupName 无法检测到 formgroupname->index->controlname
- python - 在字符串中放置字符串
- neo4j - 未提供所需类型的变量
- html - 动态更改离子图标的文本
- python - 带有 Postgres upserts 的 SQLAlchemy before_update 事件