You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solid Queue 0.8.2 SQL格式下如何仅加载队列schema至指定开发库?

解决Solid Queue 0.8.2加载queue_schema.rb到指定数据库的问题

方法一:直接用Ruby脚本加载(推荐)

由于你不需要在test环境使用队列,而官方命令会触发test环境的purge任务导致报错,最直接的方式是跳过Rails任务的环境依赖,手动加载schema:

  1. 在项目根目录创建load_queue_schema.rb脚本,内容如下:
require_relative 'config/environment'

# 切换到development环境的queue数据库连接
ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['development']['queue'])
# 加载queue_schema.rb文件
load Rails.root.join('db/queue_schema.rb')
  1. 执行脚本完成加载:
bin/rails runner load_queue_schema.rb

方法二:临时配置test环境并执行官方命令

如果偏好使用官方提供的任务命令,可以临时给test环境添加空的queue数据库配置以避免报错:

  1. 修改database.yml,在test环境下添加queue配置(执行后可删除):
test:
  primary: &primary_test
    <<: *default
    database: appa_test
  queue:
    <<: *primary_test
    database: appa_test_queue
  1. 指定development环境执行schema加载命令:
RAILS_ENV=development bin/rails db:schema:load:queue SCHEMA_FORMAT="ruby"
  1. 执行完成后,移除test环境的queue配置即可。

方法三:跳过test环境的purge任务

通过重写Rake任务,跳过触发报错的test环境purge步骤:

在lib/tasks目录下创建override_solid_queue_tasks.rake文件,内容如下:

Rake::Task["db:schema:load:queue"].clear_prerequisites
Rake::Task["db:schema:load:queue"].enhance do
  ActiveRecord::Base.establish_connection(:queue)
  load Rails.root.join('db/queue_schema.rb')
end

然后执行命令:

RAILS_ENV=development bin/rails db:schema:load:queue

内容的提问来源于stack exchange,提问作者Sig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:40:11