gem_radar

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.xgems, 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
archivedstatus.
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