SuperAPI AI 工具集

rails-upgrade

编程与开发

查看项目

更新于 10-16 02:08

技能介绍

用途

Rails Upgrade Analyzer 用于分析 Rails 应用的升级路径,提供全面的升级评估,并通过选择性文件合并完成升级。它适用于需要将 Rails 应用从当前版本升级到更新版本的场景。

主要能力

  • 验证当前目录是否为 Rails 应用(检查 Gemfile、config/application.rb、config/environment.rb)。
  • 从 Gemfile.lock 或 Gemfile 提取当前 Rails 版本。
  • 通过 GitHub CLI 获取最新 Rails 发布版本与近期标签。
  • 判断升级类型:补丁升级、次要升级或主要升级。
  • 获取官方 Rails 升级指南与 railsdiff.org 的版本差异。
  • 检查 JavaScript 依赖(如 @hotwired/turbo-rails、@hotwired/stimulus、@rails/actioncable、@rails/activestorage、@rails/actiontext、@rails/request.js),并检查 importmap 固定版本。
  • 生成升级摘要,包括版本信息、复杂度评估、关键变更与推荐步骤。
  • 执行选择性文件更新,替代 rails app:update,以保留本地自定义配置。

使用方式

该技能按步骤执行:

  1. 验证 Rails 应用。
  2. 获取当前 Rails 版本。
  3. 使用 gh api repos/rails/rails/releases/latest --jq '.tag_name' 查找最新版本,并检查近期标签。
  4. 确定升级类型。
  5. 使用 WebFetch 获取官方升级指南:https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
  6. 使用 WebFetch 获取 railsdiff 差异:https://railsdiff.org/{current_version}/{target_version}
  7. 检查 JavaScript 依赖,包括包管理器识别、Rails 相关 JS 包版本检查、可用更新检查、importmap 固定版本检查。
  8. 生成升级摘要。
  9. 执行选择性文件更新:检测本地自定义、分析 railsdiff 所需变更、创建升级计划、执行计划、处理 Active Storage 迁移、验证升级。
  10. 最终确定框架默认值:审查 new_framework_defaults 文件,逐个启用新默认值,更新 config.load_defaults,删除 new_framework_defaults 文件。

适用场景

  • 需要将 Rails 应用升级到新版本,并希望了解升级复杂度与关键变更。
  • 希望保留本地自定义配置,避免 rails app:update 覆盖文件。
  • 需要同步更新 JavaScript 相关依赖。

限制

  • 需要 GitHub CLI 已认证,否则需运行 gh auth login。
  • 如果 railsdiff.org 没有精确版本,尝试使用 major.minor.0 版本。
  • 如果应用已是最新版本,会提示用户并说明即将发布的版本。
  • 如果本地自定义配置可能丢失,会停止并展示将被覆盖的内容。
  • 资料中未提供收费、价格、平台支持范围等信息。