gem_radar

gemradar

A gem that audits your Ruby on Rails project's gems and reports their compatibility and update status.

For each gem, the report links only to its repository — it does not download or embed changelog content.

Ruby compatibility

Works on >= Ruby 2.7.

No runtime dependencies means adding gem_radar to an old project's Gemfile doesn't drag in anything that would clash with it.

This is deliberate: the projects that most need help figuring out an upgrade path are exactly the ones still stuck on an old RoR apps.

Installation

Add it to your project's Gemfile:

gem "gem_radar", group: :development

then bundle install.

Usage

Run it from the root of the project (where Gemfile.lock lives):

bundle exec gem_radar

Options:

--ruby VERSION       Project's Ruby version (default: .ruby-version or Gemfile.lock)
--rails VERSION      Project's Rails version (default: the one in Gemfile.lock)
--lockfile PATH      Path to Gemfile.lock (default: ./Gemfile.lock)
-o, --output PATH    Output file (default: gem_radar.md)
-h, --help           Shows this help
--version            Shows the version

Export GITHUB_TOKEN (or have gh authenticated) to avoid GitHub's 60 requests/hour limit for unauthenticated API access — used to check whether a gem's repository has been archived.

Report categories

  • Mandatory update — the installed version no longer satisfies the project's current Ruby version, or the Rails-component version it depends on (rails, railties, activerecord, …). Not a suggestion: the gem is already out of bounds for your current Ruby/Rails.
  • Compatible with Ruby and Rails — up to date, nothing to do.
  • 🗑️ Deprecated / archived — the GitHub repository is archived, or the gem's own description mentions it's deprecated.
  • ⬆️ Safely updatable — a newer version exists within the same major version line (for 0.x gems, the minor is treated as the breaking-change boundary, following common SemVer convention).
  • ⚠️ Updatable with changes — updating means a major version bump, or no version compatible with the current Ruby/Rails could be found (so the update would also require upgrading the framework).
  • No data — not found on rubygems.org (private gem, or installed from git/path).

How it works

  • Reads direct dependencies, installed versions and the Ruby version from Gemfile.lock (or .ruby-version / --ruby).
  • Queries the rubygems.org API for each gem's metadata, published versions, and per-version runtime dependencies.
  • Rails compatibility is inferred from a gem's dependency on any Rails component; gems unrelated to Rails are judged on Ruby compatibility only.
  • Queries the GitHub API for the repository's archived status.

Requirements

Ruby standard library only — no runtime dependencies.

How to contribute

git clone https://github.com/laurajaime/gem_radar.git
cd gem_radar
bundle install

Run the test suite:

bundle exec rspec

Run the linter:

bundle exec rubocop

Both run in CI on every push and pull request (see .github/workflows/ci.yml).

Open your PR explaining why the change is needed and what it does, with evidence that it works (test output, logs, or screenshots) — see the PR template.

License

MIT