用途
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,以保留本地自定义配置。
使用方式
该技能按步骤执行:
- 验证 Rails 应用。
- 获取当前 Rails 版本。
- 使用
gh api repos/rails/rails/releases/latest --jq '.tag_name'查找最新版本,并检查近期标签。 - 确定升级类型。
- 使用 WebFetch 获取官方升级指南:https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
- 使用 WebFetch 获取 railsdiff 差异:https://railsdiff.org/{current_version}/{target_version}
- 检查 JavaScript 依赖,包括包管理器识别、Rails 相关 JS 包版本检查、可用更新检查、importmap 固定版本检查。
- 生成升级摘要。
- 执行选择性文件更新:检测本地自定义、分析 railsdiff 所需变更、创建升级计划、执行计划、处理 Active Storage 迁移、验证升级。
- 最终确定框架默认值:审查 new_framework_defaults 文件,逐个启用新默认值,更新 config.load_defaults,删除 new_framework_defaults 文件。
适用场景
- 需要将 Rails 应用升级到新版本,并希望了解升级复杂度与关键变更。
- 希望保留本地自定义配置,避免 rails app:update 覆盖文件。
- 需要同步更新 JavaScript 相关依赖。
限制
- 需要 GitHub CLI 已认证,否则需运行
gh auth login。 - 如果 railsdiff.org 没有精确版本,尝试使用 major.minor.0 版本。
- 如果应用已是最新版本,会提示用户并说明即将发布的版本。
- 如果本地自定义配置可能丢失,会停止并展示将被覆盖的内容。
- 资料中未提供收费、价格、平台支持范围等信息。