SuperAPI AI 工具集

using-sqlite-worktrees

编程与开发

查看项目

更新于 10-16 00:01

技能介绍

用途:Rails 项目使用 SQLite(尤其 Rails 8 的 Solid Queue/Cache/Cable)时,开发数据保存在 storage/*.sqlite3。新建 git worktree 后该目录为空,bin/rails console、功能开发或跑 spec 都会因缺少真实数据而失败。本技能把主工作树的 SQLite 文件安全复制进新 worktree,处理 WAL 日志模式和 Rails 8 多数据库布局。核心原则:复制前先 checkpoint,主文件与 sidecar 一起复制,覆盖前先备份。

主要能力:解析 config/database.yml,收集 RAILS_ENV(默认 development)下所有 .sqlite3 路径;对每个源库执行 PRAGMA wal_checkpoint(TRUNCATE);把目标 storage/ 中已有文件备份为 <filename>.bak;复制 .sqlite3 及其 -wal、-shm sidecar;输出复制与备份摘要。退出码 0 表示成功或无需处理,1 表示实际错误。

使用方式:先做前置检查——主目录存在 config/database.yml、适配器为 sqlite3、已安装 sqlite3 CLI、目标路径是真实 git worktree。然后在主工作目录(不是 worktree 内)运行:ruby "${CLAUDE_PLUGIN_ROOT}/skills/using-sqlite-worktrees/scripts/create_sqlite_worktree.rb" <worktree-path>。刷新旧 worktree 用同一命令,已有文件会先备份为 .bak。

适用场景:由 using-git-worktrees 在检测到 Rails+SQLite 后委派调用(bundle install 之后、bin/rails db:test:prepare 之前),或用户直接要求复制/刷新 SQLite 开发数据。

限制:不适用于非 Rails 项目、使用 Postgres/MySQL 等非 SQLite 适配器的项目,以及生产或测试数据库。源库被运行中的 rails server/console 写入时须先停止写入者。仅保留一层 .bak 备份,重复运行会覆盖旧备份。脚本非零退出时不得静默忽略,应跳过 db:test:prepare 与基线测试并报告。