
June 23, 2026
When people think about Dependabot, they usually picture a Rails application keeping its gems up to date.
But Ruby itself—the MRI interpreter—also relies on Dependabot to automate dependency updates. Its configuration offers an interesting glimpse into how the Ruby core team manages different parts of the project.
Recently, I was browsing Ruby’s repository and found this .github/dependabot.yml:
version: 2updates: - package-ecosystem: github-actions schedule: interval: daily - package-ecosystem: cargo directories: - /yjit - /zjit schedule: interval: monthly - package-ecosystem: vcpkg directory: / schedule: interval: daily
At first glance, it looks like a simple configuration file. In reality, it reflects several engineering decisions.
Daily updates for GitHub Actions
Ruby updates its GitHub Actions every day.
This makes sense because CI infrastructure changes frequently. Keeping workflows current helps avoid deprecated actions, security issues, and compatibility problems without requiring developers to manually track every upstream release.
The configuration also groups all GitHub Actions updates into a single pull request, reducing maintenance noise.
Monthly updates for Rust dependencies
The most interesting section is probably this one:
package-ecosystem: cargodirectories: - /yjit - /zjitschedule: interval: monthly
This tells us two things.
First, YJIT and ZJIT are managed as Rust projects with Cargo.
Second, the Ruby core team intentionally updates these dependencies less frequently than GitHub Actions. Rust crates tend to evolve rapidly, and batching updates monthly provides a balance between staying current and minimizing churn.
Windows dependencies via vcpkg
Another notable entry is:
package-ecosystem: vcpkgdirectory: /schedule: interval: daily
Many Ruby developers never interact with vcpkg, but it’s an important part of Ruby’s Windows toolchain.
Dependabot keeps these native dependencies updated automatically, helping ensure Ruby continues to build reliably across supported platforms.
Not everything is updated automatically
The Cargo configuration also excludes:
exclude-paths: - gc/mmtk/**
Excluding specific paths is a common practice in large repositories. Some components may require manual coordination, follow a different release cadence, or depend on compatibility guarantees that automated updates cannot safely provide.
What Rails developers can learn
Although most applications are much smaller than Ruby itself, the same principles apply:
- Update infrastructure dependencies more frequently than application libraries.
- Group related dependency updates to reduce pull request noise.
- Use different update schedules for different ecosystems.
- Exclude components that require manual review.
- Treat dependency management as part of your engineering process, not an afterthought.
Ruby’s dependabot.yml may be a small file, but it reveals a thoughtful maintenance strategy. Sometimes, the most interesting insights into a project come not from its source code, but from the tooling that keeps it healthy.
