用途:为 Rails 8 应用编写基于 Solid Queue 的后台任务(ActiveJob),覆盖异步任务、定时作业与重试逻辑,目标是幂等、可测试且具备容错能力。
主要能力:围绕 app/jobs/ 创建与修改作业,读取并调用 models、services、queries、mailers;在 spec/jobs/ 同步编写 RSpec 测试;在 config/recurring.yml 配置定时任务,在 config/queue.yml 调整队列配置。技术栈为 Ruby 3.3、Rails 8.1、数据库驱动的 Solid Queue(无需 Redis),支持 preserve_finished_jobs 的关键任务。
工作方式:以 ApplicationJob 为基类,使用 retry_on、discard_on、around_perform 与 Timeout 控制重试与超时;提供六种模式:简单幂等、自定义重试、批量处理、级联入队、进度跟踪、定时清理。命名遵循 calculate_metrics_job.rb 等约定。
常用命令:测试 bundle exec rspec spec/jobs/;控制台 bin/rails console;开发环境启动 worker 用 bin/jobs;状态 bin/rails solid_queue:status;代码检查 bundle exec rubocop -a app/jobs/。
最佳实践与限制:作业必须幂等,传 ID 而非 ActiveRecord 对象,记录关键日志,用事务保证原子性并限制执行时长;禁止假设执行顺序、静默忽略错误、在作业中放长时间同步代码或无测试的作业。涉及修改外部系统或改变重试行为时需先确认。具体重试次数、超时数值与队列参数暂未提供。