Agent Skills
返回列表
💻

Rails 升级分析器

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 的说明,将 @org-02qudk26/skill-rails-upgrade 安装到你的 AI 助手中。

技能介绍

要解决什么问题

Rails 大版本或次版本升级时,rails app:update 会批量覆盖生成文件,很容易抹掉你在 config/application.rb、bin/dev、mailer/i18n 等处的本地定制。升级前还需要对照官方指南、发布说明和框架默认文件的差异,并同步 Hotwire、importmap 等前端依赖——这些工作分散在多个站点,手工整理成本高。

技能如何工作

本技能把升级流程拆成可执行的检查与分析步骤:

  1. 确认是 Rails 项目:检查 Gemfile(含 rails)、config/application.rb、config/environment.rb;不符合则停止。
  2. 锁定版本:从 Gemfile.lock 或 Gemfile 读取当前 Rails 版本;用 GitHub CLI 查最新稳定 tag(去掉 v 前缀),并区分补丁 / 次版本 / 主版本升级。
  3. 拉取官方与 diff 资料:用 WebFetch 读 Rails 升级指南 中与你的跳转路径相关的章节;再从 railsdiff.org/{current}/{target} 汇总默认配置、新文件、initializer、bin/ 脚本与依赖变更。
  4. JavaScript 侧:识别 npm/yarn 或 importmap;核对 @hotwired/turbo-rails、@rails/actioncable、config/importmap.rb 等是否与目标 Rails 时代对齐。
  5. 输出升级总结:给出复杂度(小/中/大)、关键破坏性变更、弃用项、推荐步骤,并明确不建议直接跑 rails app:update。
  6. 选择性合并:按 railsdiff 把变更分为新文件、可安全覆盖、需手动合并、仅注释变更;对自定义文件展示本地版、Rails 新版与建议合并结果;迁移与测试验证后再逐步启用 new_framework_defaults_*。

适用边界与注意点

  • 依赖 GitHub CLI(查 release/tag)与 WebFetch(指南、railsdiff);gh 未认证时需先 gh auth login。
  • railsdiff 若无精确 patch 版本,可退到 x.y.0 近似对比。
  • 原则:不检查就不覆盖、保留本地意图、变更最小化;任何可能丢失自定义的操作前先展示将被覆盖的内容,便于用 git 回滚。

使用场景

  • 现有项目锁在 Rails 7.1,计划升到 8.0 前,需要先对照官方指南和 railsdiff 列出破坏性变更与配置差异
  • Gemfile.lock 已确认当前版本,要在不改坏 `config/application.rb` 和自定义 `bin/dev` 的前提下制定升级合并方案
  • 应用使用 importmap 与 `@hotwired/turbo-rails`,升级 Rails 时需要核对前端包版本是否与目标框架时代一致
  • 补丁或次版本升级前,希望得到小/中/大复杂度评估和推荐步骤,而不是直接执行 `rails app:update`

适合人员

  • 长期维护 Rails monolith 的后端工程师,大版本升级前要向团队提交可执行的评估与变更清单
  • 全栈 Ruby 开发者,项目深度定制了 initializer 与 bin 脚本,升级时首要诉求是选择性合并而非整库覆盖
  • 负责技术债排期的 Tech Lead,需要把当前版本、最新 stable tag 与升级类型整理成对内路线图材料
  • 使用 Hotwire / Action Cable 的生产应用维护者,升级同时要梳理 npm 或 importmap 侧与 Rails 的版本对齐问题