This Week in Open Source (December 22, 2023)

Sara Jackson

Welcome to 2024! Oh… It’s already February? ๐Ÿ˜…

I’m still playing end of the year catch up but there’s plenty of updates to get updated on! Contained within this edition includes updates between November 3rd and December 22, 2023.

Thank you to all our many contributors!

I especially want to extend a sincere thank you to Elliot Winkler (mcmire), a long time maintainer of Shoulda Matchers, who has announced he will be graduating as a maintainer. Thank you for all your work!

I imagine catching up one, two, three months of updates all at once can be daunting. To prevent stress to my readers, and no other reason, I’ll be releasing trailing updates with 2 weeks of content at a time. Look forward to it!


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

Nick Charlton (nickcharlton) updated Bundler on CircleCI (5c677a2), updated i18n-tasks in Appraisals (dede3c8), updated Gemfile.lock (91f3ca5), and added testing using GithubActions (17e2774).

Summer โ˜€๏ธ (thoughtbot-summer) updated selenium-webdriver and removed webdrivers (c618988) and made updates to build SQL with Arel instead of from strings (0f27027).

Nick and Summer โ˜€๏ธ also dropped support for Ruby 2.7 (622ca55).

Mattia Roccoberton (blocknotes) added form field hints (8e7bb22).

Pablo Brasero (pablobm) updated the gemspec to avoid open-ended dependencies (331a653).

dependabot[bot] bumped the versions of i18n-tasks (fef10bb), faker (2e0595a), ammeter (4cf448b), factory_bot_rails (720d70a), and selenium-webdriver (728d6cd).

Dorian Mariรฉ (dorianmarie) updated bundler from 2.3.10 to 2.4.22 (ca7f6eb).

Shouichi Kamiya (shouichi) added support for all number helpers of ActiveSupport::NumberHelper (60aee78).

Trรฉsor Bireke (Tresor11) updated copyright notice to 2023 (f848114) and added a sample app path to (d533a89).


CapybaraAccessibilityAudit is a tool to extend your Capybara-powered System Tests to automatically audit the page for WCAG Stardards-based accessibility violations.

Sean Doyle (seanpdoyle) improved Engine’s RSpec auto-integration (0ee6922).

Mfon Eti-mfon (mfonism) fixed a typo in the README (05121b4).


Clearance offers Rails authentication with email & password.

Samuel Giddins (segiddins) added testing against Rails 7.1 (0724372).

Sara Jackson (sej3506) declared herself codeowner of Clerance (5ef9427) and made some fixes to CI and testing (ab34dae).

thoughtbot design system

thoughtbot design system (tbds) is the design system for thoughtbot websites.

dependabot[bot] bumped stylelint-use-logical-spec from 5.0.0 to 5.0.1 (74b4ef6).

thoughtbot dotfiles

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

Rob Whittaker (purinkle) added a handful of aliases for quicker directory nagivation including navigating up one directory (389f8c4), up two directories (f91a0f6), up three directories (4953269), and navigating back to your previous directory (f149484).

ESLint Config

thoughtbot’s ESLint Config is a batteries-included sharable ESLint configurations for React, React Native, TypeScript, and Node.js that enforce thoughtbotโ€™s JavaScript guides.

Stephen Hanson (stevehanson) fixed a broken image (50a27a8).


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

Olivier Bellone (olivier-thatch) added support for models without ID setters in build_stubbed (cae4973).

Mike Burns (mike-burns) made updates to pass a block to expect as needed (388f93f).
He also bumped factory_bot to versions to 6.4.0 (12f246d), 6.4.1 (b3dcdb5), and 6.4.2 (bd0a10c). ๐ŸŽ‰

makicamel made updates to assign klass to defined_traits to pass it’s class to ActiveSuport::Notifications (b1d8e4f) and assign klass to global traits when find_by_name (bc7fe7d).


factory_bot_rails provides Rails integration for factory_bot.

Neil Carvalho (neilvcarvalho) bump the version to 6.4.2 ๐ŸŽ‰ (54c7254).

Benoit Tigeot (benoittgt) and Leo Arnold (leoarnold) fixed an undefined method config error seen when testing on Rails 7.1 (79d1ad2).

y-yagi fixed a link to old files (8b2a78e).

Mike Burns (mike-burns) bumped the version of factory_bot we depend on (f9a1e7c), bumped to version 6.3.0 ๐ŸŽ‰ (438d035), and bumped to 6.4.0 for parity with factory_bot (3346305).


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

Joe Ferris (jferris) allowed Spot capacity type for AWS node groups (bd8a1e5), updated GitHub Actions Node version (1c751ad), updated default manual Terraform to match automatic (98bd2d2), and fixed missing IAM permissions for Fluent Bit (da40e8b).

Peterson F. dos Santos (petersonfs) added new options to configure the cluster (c06ee71).

dependabot[bot] bumped workflow versions of hashicorp/setup-terraform (4b165a5), actions/setup-node (812d928), terraform-linters/setup-tflint (b068a4b), aws-actions/configure-aws-credentials (e33b71a), and actions/checkout (0ab0e94).

Olamide (OlamideOl1) added an option to create a WAF along with the ingress resource (10c23c2), added allowed and block IP list for WAF (570ee8b), and updated ingress WAF variables and set rate limit to enabled by default (edd0694).

Form Props

Form Props is a Rails form builder that outputs input attributes (in JSON) instead of tags. Now you can enjoy the conviences of Rails helpers in other view libraries like React and React Native.

Johny Ho (jho406) fixed nested attributes (905086e), and bumped FormProps version from 0.0.3 to 0.0.4 ๐ŸŽ‰ (5e3bc08).

He made attribute setting explicit and added a mapping of html attributes => React attributes (2c5ebd0), updated Gemfile.lock (f25277f), bumped FormProps version from 0.0.4 to 0.0.5 ๐ŸŽ‰ (5317170).

Johny also updated format_date to use presence on empty value for datefield (f253853), added camelize to `associationkey` (0d715be), added the ability to explicitly set a key (ab0b91b), and bumped FormProps version from 0.0.5 to 0.0.6 ๐ŸŽ‰ (a701161).


GoldMiner is a tool for finding interesting messages in a Slack channel and turning them into a blog post for the thoughtbot blog.

dependabot[bot] bumped standard from 1.31.2 to 1.32.0 (967a8c2).


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

Chad Pytel (cpytel) fixed a broken link to the inclusive meetings guide PDF (3a4cabf).

Jose Blanco (laicuRoot) added inclusive language and acronyms remarks to our guide for meetings (4ab5599).


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) updated rendering to use a method instead of local_assigns (52d7447), and bumped the version to 0.24.0 ๐ŸŽ‰ (a784e37).

He removed the auto camelize lower formatting on keys, opting for usage to be explicit about the keys being serialized (1843b0c). As this is a backward breaking change, Johny bumped the version past the 0.20’s and into 0.30.0 ๐ŸŽ‰ (112b4d8).

He removed the virtual_path_of_template method (55ace47), updated the README (af03b5b), bumped the version to 0.31.0 ๐ŸŽ‰ (315f1ad), reverted the removal of virtual_path_of_template, instead renaming the method (919b0bc), and bumped the version to 0.32.0 ๐ŸŽ‰ (8c27c9d).

I have a lot of respect for Johny’s regular version updates! ๐Ÿ“ฐ You can read more about the changes in NEWS.

Sentry DSN for AWS

Sentry DSN for AWS creates and rotates Sentry project DSNs using AWS Secret Manager.

dependabot[bot] bumped terraform-linters/setup-tflint from 3 to 4 (7357b2c) and actions/checkout from 3 to 4 (7e5d7b8).

Shoulda Matchers

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

Pedro Paiva (VSPPedro) added ruby 3.3.0-rc1 support (027db70).

Amalrik Maia (amalrik) removed the with qualifier on define_enum_for matcher (4886266).

Matheus Sales (matsales28) added support for Rails 7.1 (7e069cf), added a feature to give a hint when an unrelated error is seen with negated allow_value (f2db1f2), and removed references to unsupported Rails versions (58f5077).

Matheus also fixed yard undoc warnings (423eddb), refactored loading of unit test helpers (c17c0d7), fixed a flaky spec on ValidateAbsenceOfMatcher (5d26d0d), and updated the Rails versions (3821caa).

stephann (stephannv) added a normalize matcher (baabf89).

Mamoru TASAKA (mtasaka) added a fix to catch ruby3.3 format NoMethodError message (3654e5c).

Knut I. Stenmark (stonefield) added a fix to ensure that validation specs work for ActiveModel without ActiveRecord (5d60245).

Elliot Winkler (mcmire) graduated as a maintainer of Shoulda Matchers and moved his contact info to alumni (0dc6c6d).
Elliot, we thank you for all your hard work over the many years! โค๏ธ


Terrapin is a tool for running shell commands safely, even with user-supplied values.

Matt Jankowski (mjankowski) released version 1.0.1 ๐ŸŽ‰ (fd45f78).

Terraform EKS CI/CD Pipeline

Terraform EKS CI/CD Pipeline creates CI/CD pipelines to deploy applications to EKS clusters.

In the terraform workflows, dependabot[bot] bumped the versions of hashicorp/setup-terraform (61b656f), terraform-linters/setup-tflint (cda5a3e), and actions/checkout (7186918).


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

Stephanie Minn (stephanieminn) removed legacy analytics code (9d07bc6).

โœจ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.