Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.
Gemfile Upgrade
Input
- ARG =
gem_name(single gem) |--outdated(batch mode)
Workflow (single gem)
- Check status:
bundle outdated GEM --strictParse: current, latest, jump type (patch/minor/major)
- Locate repo:
bundle info GEM --path # check gemspec for homepage / source_code_uri- Fetch changelog via WebFetch (try in order, stop on first hit):
https://github.com/OWNER/REPO/releaseshttps://github.com/OWNER/REPO/blob/main/CHANGELOG.mdhttps://github.com/OWNER/REPO/blob/main/HISTORY.mdhttps://github.com/OWNER/REPO/blob/main/NEWS.md
- Extract changes between current → target. Flag:
- Major bumps (X.x → Y.x)
- Keywords:
BREAKING,removed,renamed,changed behavior - Migration guides
- Ruby/Rails version requirements
- Deprecations
- Present analysis:
## Upgrade Analysis: GEM CURRENT → TARGET
### Version Jump: PATCH | MINOR | MAJOR
### Breaking Changes: [list]
### Migration Required: [steps]
### Deprecations: [list]
### New Features: [list]
### Compatibility: [Ruby/Rails reqs]- AskUserQuestion → options:
Upgrade to latest minor (recommended)— safer, bug fixesUpgrade to latest (TARGET)— review breaking changesUpgrade to specific version— prompt for versionSkip
- Update Gemfile (Edit):
# latest
gem 'GEM', '~> MAJOR.MINOR'
# minor only
gem 'GEM', '~> CURRENT_MAJOR.CURRENT_MINOR'- Run update:
bundle update GEM --conservativeOn failure → show conflicts, suggest dependent updates, offer rollback.
- Run tests (auto-detect):
if [ -f spec/spec_helper.rb ]; then bundle exec rspec
elif [ -f test/test_helper.rb ]; then bundle exec rails test
fi- Pass → step 10
- Fail → show failures, AskUserQuestion:
Rollback|Investigate
- Commit:
git add Gemfile Gemfile.lock
git commit -m "$(cat <<'EOF'
chore(deps): upgrade GEM from CURRENT to TARGET
Breaking changes:
- [list]
Migration notes:
- [steps taken]
Changelog: URL
EOF
)"Workflow (--outdated batch mode)
bundle outdated --strict- Group by jump type:
- PATCH (X.Y.Z → X.Y.Z+1) — usually safe
- MINOR (X.Y → X.Y+1) — review recommended
- MAJOR (X → X+1) — careful review required
- AskUserQuestion (multi-select) presenting all gems grouped by risk
- For each selected gem → run single-gem workflow (steps 1-10)
Rollback
At any failure step:
git checkout -- Gemfile Gemfile.lock
bundle installSafety Rules
- Always show diff before applying
- Create backup of Gemfile before edit (Edit tool preserves prior content via git)
- Never commit if tests fail
- Default to
--conservativeto avoid cascading updates - Flag major version jumps explicitly in analysis

