SuperAPI AI 工具集

rails-background-jobs

通用与其它

查看项目

更新于 10-16 01:15

技能介绍

用途:在 Rails 应用中添加、配置或审查后台任务(background jobs)。核心原则是为幂等性和安全重试而设计任务,优先使用 Active Job 的统一 API,并根据 Rails 版本与规模选择后端。

主要能力与规则:任务参数传 ID 而非对象,在 perform 中重新加载;副作用(扣款、发邮件、调 API)前必须做幂等检查;perform 只做三件事——按传入 ID 加载记录、做幂等/永久空操作守卫、把副作用或编排委托给服务对象,超出则抽取服务对象。重试用 retry_on 处理瞬时错误,discard_on 处理永久错误。

硬性门槛:每个任务必须先写并验证测试再实现——先写任务 spec(幂等、重试、错误处理),运行确认因任务不存在而失败,然后才写任务类。

后端选择:Rails 8 默认 Solid Queue(基于数据库,无需 Redis),Rails 7 及更早无默认,需设置 queue_adapter(常用 Sidekiq + Redis 以应对高吞吐);开发/测试可用 :async 或 :inline。周期性任务在 Rails 8 用 config/recurring.yml,Rails 7 用 cron 或 sidekiq-cron。仪表盘 Rails 8 用 Mission Control Jobs,Rails 7 用第三方如 Sidekiq Web。

验证:完成后运行完整测试套件,确认任务出现在队列仪表盘,入队两次验证第二次为空操作;确认 retry_on 有明确 attempts 上限、discard_on 覆盖至少一种永久错误、周期性任务位于配置文件中、perform 只做加载/守卫/委托。

限制与常见陷阱:避免传 ActiveRecord 对象、副作用前无幂等检查、retry_on 无次数上限、缺少 discard_on、perform 中写复杂业务逻辑、生产环境用 :inline 或 :async、周期性任务只定义在代码中。资料未提供具体安装命令与价格信息。