Blastoff Rails 2026 - Lightning Talk: Keep your Dependencies Fresh by Sam Williams
Watch on YouTubeVideo summary
Sam Williams introduces Renovate, a powerful bot designed to keep software dependencies fresh by automatically scanning package files across over 90 different managers for updates and vulnerabilities. Drawing on his experience as a former teacher who learned that practicing difficult tasks reduces anxiety, Sam explains how he applied the same logic to dependency management: just as calling parents became easier with repetition, managing complex update cycles becomes manageable through automation. The tool generates pull requests (PRs) directly in repositories like GitHub or GitLab, providing an out-of-the-box dashboard that consolidates release notes and security alerts so developers do not need to visit multiple sources for information.
To streamline the workflow, Renovate allows teams to configure automatic merging for minor updates without human intervention, while offering flexibility to delay PR creation until a convenient time, such as Friday afternoons or Monday mornings when the team is ready to review changes. This approach effectively bypasses unnecessary delays caused by waiting for immediate bug fixes in patch versions unless there are critical security vulnerabilities that require urgent attention. Furthermore, addressing supply chain attacks highlighted by recent incidents like those affecting GitHub Actions and Docker files, Renovate replaces mutable Git tags with immutable digests, significantly reducing the risk of code tampering during updates.
The tool also supports custom automation through Python scripts or other tasks that run after a dependency is updated but before the PR is created, ensuring that related workflows stay in sync without triggering circular loops. It intelligently groups multiple Ruby files to update them simultaneously when version changes occur and can handle private repositories containing corporate intellectual property shared across different Rails applications. By managing these complex scenarios where various apps might otherwise run conflicting versions of a gem, Renovate transforms what could be a maintenance nightmare into an automated, reliable process that keeps the entire deployment pipeline secure and up-to-date with minimal human oversight.
Read the full video transcript
5, 4,
3,
2, 1.
We have lift off.
>> I actually met Sam at Blue Ridge Ruby.
So, shout out to Blue Ridge Ruby.
And let's give Sam
a second to hook up before we give him
the Blast Off Rails welcome.
Yeah, good. Good.
All right. Let's give him the warm Blast
Off welcome in 5, 4, 3, 2, 1.
>> Blast off!
>> [applause]
>> Uh hi, my name is Sam and I wanted to
talk about the tool I use and love
called Renovate.
Um
Here we go.
So, I had a coworker tell me last year
uh if something's hard, do it more
often. And this really made me think of
two things. I used to be a public school
teacher uh in my first career
and arguably I was pretty bad at it.
Um calling parents was really hard
and made me very anxious before I was
going to do it. And so, doing it more
and more, I got better at it and that
anxiety kind of lessened as I went
through.
And the other thing it reminds me of is
I used to hold my breath every time I
ran bundle install
uh because of this gem over here.
So, Renovate's a bot and it scans your
package files. It works with over 90
different package managers.
It scans those files for your
dependencies and it looks for updates
for those dependencies and then it
generates PRs in your repo
so that you can merge those in.
Out of the box, you get a dependency
dashboard. It's just a high-level issue
that shows you what's going on. Uh gives
you links to those PRs.
The PRs themselves, you get release
notes from those dependencies, so you
don't have to go to a different spot.
Um it indicates vulnerability alerts and
has some uh fast actions for those.
It auto rebases your PRs, and it's free
to run in a variety of different ways,
and like GitHub, GitLab, get all those
things.
Um so if you're thinking this sounds a
lot like uh Dependabot, I would say this
sounds better than Dependabot.
Uh so here's how I use it.
Um so for smaller changes for
dependencies, I just go ahead and auto
merge those. I don't even look at those
PRs. It will automatically just run your
CI/CD, and then uh merge those uh
independently with no human input.
Uh
if you're like me and like Ruby 4.0.0
comes out, you like wait a week because
you know 4.0.1 with bug fixes is coming
out in a few days.
Um so you can actually delay the
creation of those PRs for however long
you want. Um and vulnerability alerts
actually bypass this cuz you generally
want to update those um
quickly.
My team likes to know on Monday what PRs
we're going to deal with for these
updates. So you can open these whenever
you want. If your Fridays are free, you
want to do them then, open them on
Friday.
Um if you use Aqua's uh Trivy security
scan tool, you'll know that it got hit
by a supply chain attack back in March.
And the reason this happened is because
um GitHub actions and Docker uh files
use uh Git tags and Docker tags for
pinning different versions. And those
are mutable. And um
what's not mutable or is immutable are
digests. Um
so Renovate swaps out those tags for
digests, keeping you uh a lot less
vulnerable to those supply chain
attacks.
You can also run uh tasks. You can run
your own Python scripts
uh or any sort of script. Um and this
happens after
uh the dependency is updated but before
the PR is created. And what's nice about
that, like in Git in GitHub, um if you
have like a workflow that was going to
do this, it won't actually trigger
um
like your pull request workflows
afterwards cuz they want to stop from
like circular workflows that never end.
But it will trigger after Renovate
updates, so you can run and keep files
in in sync.
Um if you have multiple like Ruby uh
files where you indicate like the Ruby
version for your application, Renovate
you can group those. So when the PR gets
generated, it updates all those
different files.
And you can pin uh private repos as
well, which is really helpful. I use
this a lot uh for my work. Um and so I
wanted to talk a little bit about like
the issue with having a private gem is
like if you have multiple Rails apps um
and you eventually realize, especially
at work, like you realize they share
some of the same code, you want to
extract that code into a private gem or
to a gem, you need to make it private
because it's corporate IP.
Um,
and then you get into this weird case
where like your different Rails apps are
running different versions of that gem.
Um, and that just becomes a nightmare to
keep all up to date.
Renovate just handles this. So, this is
a workflow
from a Ruby Gems dependency all the way
to a deployed application through a
private gem using Renovate using your
CI/CD pipeline
not touched by a human depending upon
your configuration.
Um, so if you're using Dependabot, I
highly recommend you check out Renovate
instead.
Uh, my name is Sam Williams.
So, thank you.
>> [applause]