● 社群
ombulabs
⚡ 即開即用
claude-code_rails-upgrade-skill
作者 ombulabs · ombulabs/claude-code_rails-upgrade-skill
Claude Code 技能,有條不紊地升級 Rails——從稽核、修復棄用警告到 bundle update——而不會搞壞一切。
Rails Upgrade Skill(由 OmbuLabs 提供)引導 Claude 按照標準 Rails 升級流程執行:稽核程式碼庫、修復棄用警告、套用框架預設值、處理 gem 不相容問題,並在新版本上驗證。基於 OmbuLabs 升級 Rails 應用的實際生產經驗,適合進行 N → N+1 升級,或從舊版本趕上最新版本。
為什麼要用
核心特性
- 版本感知的升級手冊(Rails 6 → 7、7 → 7.1、7.1 → 7.2、7.2 → 8)
- 棄用警告全面掃描與修復建議
- 框架預設值遷移(rails app:update)
- 針對目標 Rails 版本的 gem 相容性檢查
- 清理舊包袱(在較新版 Rails 中移除 Spring)
- 測試優先升級策略:切換前先修好測試
即時演示
實際使用效果
claude-code-rails-upgrade-skill.replay
▶ 就緒
使用場景
實戰用法: claude-code_rails-upgrade-skill
何時使用: 你目前在 Rails 6.1,需要升到 7.2。你想要的是一份計畫,而不是碰運氣。
步驟
-
稽核目前狀態
稽核這個 Rails 應用:目前版本、Ruby 版本、gem 清單,以及測試執行時產生的棄用警告。✓ 已複製
→ 基準報告
-
建立升級路徑
規劃升級至 Rails 7.2 的計畫,逐版本進行(6.1 → 7.0 → 7.1 → 7.2),每個階段附上里程碑標準。✓ 已複製
→ 多階段升級計畫
-
找出阻礙項目
哪些 gem 沒有相容 7.2 的版本?請針對每個 gem 提出處理方案(升級/替換/fork)。✓ 已複製
→ 逐 gem 的阻礙清單
結果: 一份具有分階段里程碑的實際可行升級計畫。
注意事項
- 一次跨越兩個主版本 — 技能強制要求每次只升一個次要或主要版本——不要覆蓋此限制
何時使用: 你正處於版本之間,測試執行時充斥著大量棄用警告。
步驟
-
蒐集警告
→ 去重後的清單,附上出現的檔案與行號
-
分組並修復
依成因分組,針對每組提出最小修改量的修復方案並附上差異比對。✓ 已複製
→ 分組修復的差異比對
結果: 測試執行乾淨無警告,準備好進行下一個版本升級。
何時使用: 你已更新 Gemfile 並執行了 rails app:update;現在多了一堆新的 initializer 檔案。
步驟
-
審查差異
審查 rails app:update 產生的差異比對,標記任何可能破壞我們應用的預設值變更(strict_loading、zeitwerk mode 等)。✓ 已複製
→ 每項變更附上風險標註
-
分階段啟用
針對每個有風險的預設值,制定分階段的推出計畫:先透過環境變數開關啟用、在 staging 上驗證,再正式切換。✓ 已複製
→ 每個預設值的分階段計畫
結果: 預設值順利啟用,不會出現意外的功能回歸。
注意事項
- 一次啟用全部 load_defaults — 使用 new_framework_defaults_X.Y.rb 逐項漸進啟用
組合
與其他 MCP 搭配,撬動十倍槓桿
對升級後的程式碼進行資安審查
升級至 Rails 7.2 後,對驗證機制和參數處理部分執行 OWASP 審查。✓ 已複製
成本與限制
運行它的成本
- API 配額
- None
- 每次呼叫 Token 數
- 20-80k across an upgrade
- 費用
- Free
- 提示
- 針對特定目錄執行棄用警告掃描,而非一次掃描整個應用程式。
安全
權限、密鑰、影響範圍
憑證儲存: 無需任何憑證
資料出站: 程式碼會傳送至 Claude 進行推論
- 永遠在分支上進行升級。未經明確確認,不要讓 Claude 執行具破壞性的指令(db:migrate、bundle update)。
故障排查
常見錯誤與修復
rails app:update 產生未 commit 的二進位檔案
這些通常是系統檔案,將它們加入 Gitignore 並重新乾淨產生。
Tests pass locally, fail in CI after upgrade
可能是自動載入差異或 production 模式下的 eager_load 問題,請在本機以 RAILS_ENV=production 執行測試。
Gem bundle resolution fails
技能會建議替代的 gem 版本;有時需要使用 fork 或替換方案。
驗證: bundle update --conservative
替代方案
claude-code_rails-upgrade-skill 對比其他方案
| 替代方案 | 何時用它替代 | 權衡 |
| next_rails gem | 你想要一個有固定規則的升級輔助工具 | 不提供 LLM 引導的棄用警告修復功能 |