This Week in Open Source

Welcome to the wonderful mystery box that is This Week in Open Source! Will you be getting a week of updates? A month? And from when?

Buckle up - you’re in for updates covering the remainder of April and entirety of May! That’s SIX WHOLE WEEKS! Phew!

Place your bets for who made the most contributions this period. My bet is on Steve Polito and the amazing work he’s doing over in Suspenders.


Administrate is a framework for creating flexible, powerful admin dashboards in Rails.

Jeanine Soterwood (littleforest) made sure the index_header partial is created when generating views (7b7ac38).

Cale Crawford (CaleCrawford) fixed the flaky “search with a filter with arguments” spec (d70f37e).

Stefanni Brasil (stefannibrasil) added the dynamic-readme reusable workflow (a605a32).

Trésor Bireke (Tresor11) updated the License year (6e52e64).

dependabot[bot] bumped the versions of sentry-rails (c372f0c), selenium-webdriver (448418e), (e70cd3b), (aab1e25), dotenv-rails (0a28463), (2b554b3), nokogiri (9aad7ea), standard (56b3efb), i18n-tasks (2bbf435), pundit (a811a4e), launchy (01ab492), rexml (9efb851), rack-timeout (304eeeb), formulaic (f443be7), webmock (b722fce), and faker (8bed5ee).


Appraisal is a Ruby library for testing your library against different versions of dependencies.

Joe Sharp (joe-sharp) added the ability to use variables in Gemfiles (be4fa01).


Clearance offers Rails authentication with email & password.

Dorian Marié (dorianmariecom) created (4bc064f).

Manuel Meurer (manuelmeurer) fixed validating emails in strict mode (82e6f73).

James Robey (foucist) updated the example config in (3ab1852).

Mina Slater (minaslater) removed the Hound README badge (6808c6c).

Sara Jackson (sej3506) released version 2.7.1 🎉 (c045bb4).

Jos O'shea (whatnotery) updated sqlite3 and erb_lint gems (fb03575).

Design Sprint Guide

The Design Sprint Guide]( is a static website built using Eleventy.

Luke Mitchell (LkeMitchll) and Danny Kim (dankybot) fixed a typo in the ‘speedy eights’ exercise (2f6274d).

Stefanni Brasil (stefannibrasil) reverted a URL change (2cd0625) and added title tags to pages (486f7ae).

thoughtbot dotfiles

thoughtbot dotfiles is a set of vim, zsh, git, and tmux configuration files.

Steve Polito (stevepolitodesign) updated railsrc to skip tests when building new application (681553f) and added an application template to railsrc (1cd64fa).


factory_bot is a library for setting up Ruby objects as test data.

Sarah Lima (sarahraqueld) added new maintainers to CODEOWNERS (229246b).

Silumesii Maboshe (smaboshe) updated the Dependabot configuration (5e1c810).

Antonis Berkakis (berkos) added Ruby 3.3 to CI (bbb881a).

Matthew Gizzi (m-gizzi), Michelle Yuen (yuenmichelle1), and Stephanie Minn (stephanieminn) added a case for build_class to handle class names with underscores passed as a string (c791452).

🎓 Mike Burns (mike-burns) graduated as a maintainer of factory_bot (b5738ef).

We want to thank Mike Burns for his hard work and contributions through the years. ❤️


factory_bot_rails provides Rails integration for factory_bot.

Silumesii Maboshe (smaboshe) updated the Dependabot schedule (edc2b3f).

He and Sarah Lima (sarahraqueld) added a CODEOWNERS file (1c24be0).

Silumessi and aberkakis updated CI to run Ruby 3.3 (f0e60ac).


Flightdeck provides Terraform modules for rapidly building production-grade Kubernetes clusters following SRE practices.

Olamide (OlamideOl1) added a custom groups option to aws auth config map builder (ee25c58).

Form Props

Form Props is a Rails form builder that outputs HTML props instead of tags. Now you can enjoy the power and convenience of Rails helpers in React!

Ryan Krug (keegnotrub) added text_field to usage example in (abd433f) and added the ability to pass form_props options to Inputs::RadioButton (7a1ab92).

Johny Ho (jho406) fixed a bad cron (d518b4d).


thoughtbot’s Guides for working together, getting things done, programming well, and programming in style.

Summer ☀️ (thoughtbot-summer) added an explanation for how vague meeting invitations can trigger anxiety attacks and how to add clarity (6d071b2).


PropsTemplate is a direct-to-Oj, JBuilder-like DSL for building JSON. It has support for Russian-Doll caching, layouts, and can be queried by giving the root a key path.

Johny Ho (jho406) fixed a bad cron (5112430), fixed an issue with templates that don’t have a virtual_path (61f582f), and bumped the version to 0.34.0 🎉 (8eaa418).

Ryan Krug (keegnotrub) updated the #traversing ref in (a4c4a77).


Shoulda helps you write more understandable, maintainable Rails-specific tests under Minitest and Test::Unit.

🎓 Elliot Winkler (mcmire) graduated as a maintainer of Shoulda and wrote a heart-felt sign off that’s worth a read: (0d7992c).

We want to thank them for their years of dedication and contribution! ❤️

Shoulda Context

Shoulda Context makes it easy to write understandable and maintainable tests under Minitest and Test::Unit within Rails projects or plain Ruby projects.

Pedro Paiva (vsppedro) got the changelog up to date (d022bc2), fixed a broken link in changelog (d80530c), bumped version to 3.0.0.rc1 🎉 (c67b11e), and bumped shoulda-context version in Gemfile.lock to 3.0.0.rc1 (855f0c3).

Shoulda Matchers

Shoulda Matchers provides simple one-liner tests for common Rails functionality.

Matheus Sales (matsales28) fixed the Polymorphic + STI uniqueness check (a527d32), added a default qualifier to the define_enum_for matcher (c9d234a), and added a validating qualifier to the enum matcher (3c88e1c).

thoughtbot stylelint Config

thoughtbot stylelint Config is a shareable stylelint configuration that enforces thoughtbot’s Sass guides.

Stefanni Brasil (stefannibrasil) added the dynamic-readme reusable workflow (97dd0ca).


Superglue is a tool that helps you use classic Rails to build rich React Redux applications with NO APIs and NO client-side routing.

Camillo Visini (visini) made improvements to the tutorial (fd3f027).

Jade Philippe (jp524) added an erb-lint exception for ERB templates (0c66d04).

Stefanni Brasil (stefannibrasil) fixed CI issues after migrating from CircleCI to GHA (43da6b2) and scheduled superglue to build regularly against Rails main (560c73d).

Silumesii Maboshe (smaboshe) replaced the CircleCI badge with the GitHub badge in the README (988fde6).

Johny Ho (jho406) fixed a bad cron (61d7eb2).


Suspenders is a Rails template with our standard defaults, ready to deploy.

Stefanni Brasil (stefannibrasil) added the dynamic-readme reusable workflow (f61e5f8).

During this time, Steve Polito (stevepolitodesign) was busy! Listing all of his work is possible, but may be more readable in the form of the Suspenders’ release notes. You can read them here.

Collaboration is always worth sharing here, so I’ve included these contributions:

Dimiter Petrov (crackofdusk) and Steve introduced the suspenders:development:environment generator (383efcf).

Steve and Sean Doyle (seanpdoyle) updated the web generator to generate when suspending a new Rails application. (afafe25).

Steve and Mike Burns (mike-burns) added handling for a potential TOCTOU bug around postcss.config.js (95e57d0).


Upcase is a Rails application deployed to Heroku designed to help sharpen your programming skills.

Silumesii Maboshe (smaboshe) added RSpec tests to the GitHub Action (9eca751), adjusted the project to use bin/dev to start the application locally (aade185), and updated the Dependabot configuration (7ba66c8).

Silumessi also updated the Gemfile (851907b), specified the version of Ruby with .ruby-version in the Gemfile (dbdb1d0), made preparations for OmniAuth version 2.x (54a0b76), added the specific Ruby version in Gemfile (208be94).

He also updated the Ruby version to 3.0.7 (dd79d14), updated RailsAdmin from 2.x to 3.x (9027f88), and updated Bundler to v2.5.11 (c990c43).

dependabot[bot] bumped the versions of sinatra (891dc8a), clearance (765d72d), jmespath (af56042), autoprefixer-rails (b0a0fff), bootsnap (ce84421), spring (5a6edf5), simplecov (afd484a), timecop (45bac3b), omniauth-rails_csrf_protection, omniauth, and omniauth-github (140df0b). mime-types (e5daaf7), validates_email_format_of (327fa90), nokogiri (2bc8a00), rexml (7c37659), rack-mini-profiler (83a1434), inline_svg (c0abf6d), sentry-rails and sentry-ruby (3ef0070), dotenv-rails (b043b3d), and responders (8300df5).

Trésor Bireke (Tresor11) updated the podcast link on the landing page (d89d21b) and added alt text to images (8dbf343).

✨Have you considered contributing to open source? There’s a project out there for you! Visit our Open Source page to learn more about our team’s projects and contributions. While you’re there, consider contributing to one of our projects.

We recently started sharing notes from our internal open source maintainers sync! Check out this doc for community opportunities!