---
title: This Week in Open Source (December 22, 2023)
teaser: Recent thoughtbot open source updates (December 22, 2023).
tags: news,open source,this week in open source
author: Sara Jackson
published_on: 2024-02-21
---

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](https://github.com/mcmire)), a long time maintainer of
[Shoulda Matchers](#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](#administrate)
- [CapybaraAccessibilityAudit](#capybaraaccessibilityaudit)
- [Clearance](#clearance)
- [thoughtbot design system](#thoughtbot-design-system)
- [thoughtbot dotfiles](#thoughtbot-dotfiles)
- thoughtbot's [ESLint Config](#eslint-config)
- [factory\_bot](#factory_bot)
- [factory\_bot\_rails](#factory_bot_rails)
- [Flightdeck](#flightdeck)
- [Form Props](#form-props)
- [GoldMiner](#goldminer)
- thoughtbot's [guides](#guides)
- [PropsTemplate](#propstemplate)
- [Sentry DSN for AWS](#sentry-dsn-for-aws)
- [Shoulda Matchers](#shoulda-matchers)
- [Terrapin](#terrapin)
- [Terraform EKS CI/CD Pipeline](#terraform-eks-cicd-pipeline)
- [Upcase](#upcase)

## [Administrate](https://github.com/thoughtbot/administrate)

[Administrate](https://github.com/thoughtbot/administrate) is a framework for
creating flexible, powerful admin dashboards in Rails.

Nick Charlton ([nickcharlton](https://github.com/nickcharlton))
updated `Bundler` on CircleCI
([5c677a2](https://github.com/thoughtbot/administrate/commit/5c677a212fe4299beff152b27f5ca82a15715f7a)),
updated `i18n-tasks` in Appraisals
([dede3c8](https://github.com/thoughtbot/administrate/commit/dede3c8aab9f2686586ed9f04324f77c7e027779)),
updated Gemfile.lock
([91f3ca5](https://github.com/thoughtbot/administrate/commit/91f3ca5931596fd515d483e61f8178d4a53e5064)),
and added testing using GithubActions
([17e2774](https://github.com/thoughtbot/administrate/commit/17e2774735ec9a025be50e320f3937cb3de2b20b)).

Summer ☀️ ([thoughtbot-summer](https://github.com/thoughtbot-summer))
updated `selenium-webdriver` and removed `webdrivers`
([c618988](https://github.com/thoughtbot/administrate/commit/c618988db1658b69937750d8a565029fa1da86ed))
and made updates to build SQL with Arel instead of from strings
([0f27027](https://github.com/thoughtbot/administrate/commit/0f270275f0978146c345db48d3fdbc15cdf40c8a)).

Nick and Summer ☀️ also dropped support for Ruby 2.7
([622ca55](https://github.com/thoughtbot/administrate/commit/622ca5562e6c00c14cd44687d8b81cb40104a811)).

Mattia Roccoberton ([blocknotes](https://github.com/blocknotes))
added form field hints
([8e7bb22](https://github.com/thoughtbot/administrate/commit/8e7bb22c41bf158dca7c88eb00efc84f92535e51)).

Pablo Brasero ([pablobm](https://github.com/pablobm))
updated the gemspec to avoid open-ended dependencies
([331a653](https://github.com/thoughtbot/administrate/commit/331a6530bdff23127a5df77fd96eaa74c2463abd)).

[dependabot[bot]](https://github.com/apps/dependabot)
bumped the versions of `i18n-tasks`
([fef10bb](https://github.com/thoughtbot/administrate/commit/fef10bbadd3ad558de63a8b7eb46f3a7b76cbfc4)),
`faker`
([2e0595a](https://github.com/thoughtbot/administrate/commit/2e0595a23e6c12cdaf1eb381dd6919f30a45d041)),
`ammeter`
([4cf448b](https://github.com/thoughtbot/administrate/commit/4cf448b2263a20e2898857c374204fc67d3cf76d)),
`factory_bot_rails`
([720d70a](https://github.com/thoughtbot/administrate/commit/720d70ad7f444751c653fb55e5cf0e28a0abb4f8)),
and `selenium-webdriver`
([728d6cd](https://github.com/thoughtbot/administrate/commit/728d6cd0f5eb4b20f1b7faea3ba166d318f73024)).

Dorian Marié ([dorianmarie](https://github.com/dorianmarie))
updated `bundler` from 2.3.10 to 2.4.22
([ca7f6eb](https://github.com/thoughtbot/administrate/commit/ca7f6eb3782a859bd032b36cba288177117827d7)).

Shouichi Kamiya ([shouichi](https://github.com/shouichi))
added support for all number helpers of `ActiveSupport::NumberHelper`
([60aee78](https://github.com/thoughtbot/administrate/commit/60aee78f37fc759ba7be42bb7bf7a032b1286cdf)).

Trésor Bireke ([Tresor11](https://github.com/Tresor11))
updated copyright notice to 2023
([f848114](https://github.com/thoughtbot/administrate/commit/f848114a9962eba83d4893d900d6c128754a0016))
and added a sample app path to CONTRIBUTING.md
([d533a89](https://github.com/thoughtbot/administrate/commit/d533a89cfdd9b79f7a557938c2682acaa861aa4d)).

## [CapybaraAccessibilityAudit](https://github.com/thoughtbot/capybara_accessibility_audit)

[CapybaraAccessibilityAudit](https://github.com/thoughtbot/capybara_accessibility_audit)
is a tool to extend your Capybara-powered System Tests to automatically audit
the page for WCAG Stardards-based accessibility violations.

Sean Doyle ([seanpdoyle](https://github.com/seanpdoyle))
improved Engine's RSpec auto-integration
([0ee6922](https://github.com/thoughtbot/capybara_accessibility_audit/commit/0ee6922ef19a391fb617778ef730af30b2680759)).

Mfon Eti-mfon ([mfonism](https://github.com/mfonism))
fixed a typo in the README
([05121b4](https://github.com/thoughtbot/capybara_accessibility_audit/commit/05121b40c99d14ebd4aa72c4c17fdab977876950)).

## [Clearance](https://github.com/thoughtbot/clearance)

[Clearance](https://github.com/thoughtbot/clearance) offers Rails authentication with email & password.

Samuel Giddins ([segiddins](https://github.com/segiddins))
added testing against Rails 7.1
([0724372](https://github.com/thoughtbot/clearance/commit/0724372ab11c1aba773b7a8012795d33ee9d602a)).

Sara Jackson ([sej3506](https://github.com/sej3506))
declared herself codeowner of Clerance
([5ef9427](https://github.com/thoughtbot/clearance/commit/5ef9427fd17802d1df0e2707079f016b8d1c14c7))
and made some fixes to CI and testing
([ab34dae](https://github.com/thoughtbot/clearance/commit/ab34daec51799fe827cbc27f4e23105913be833a)).

## [thoughtbot design system](https://github.com/thoughtbot/design-system)

[thoughtbot design system](https://github.com/thoughtbot/design-system) (tbds)
is the design system for thoughtbot websites.

[dependabot[bot]](https://github.com/apps/dependabot)
bumped `stylelint-use-logical-spec` from 5.0.0 to 5.0.1 
([74b4ef6](https://github.com/thoughtbot/design-system/commit/74b4ef692083401d93dc0a00a4fc49d7f95ed1d3)).

## [thoughtbot dotfiles](https://github.com/thoughtbot/dotfiles)

[thoughtbot dotfiles](https://github.com/thoughtbot/dotfiles) is a set of vim,
zsh, git, and tmux configuration files.

Rob Whittaker ([purinkle](https://github.com/purinkle))
added a handful of aliases for quicker directory nagivation including navigating up one directory
([389f8c4](https://github.com/thoughtbot/dotfiles/commit/389f8c425e59c5f4c8f19eb75742edffa524db8e)),
up two directories
([f91a0f6](https://github.com/thoughtbot/dotfiles/commit/f91a0f6acba18f989d8c137de007634ac18db06e)),
up three directories
([4953269](https://github.com/thoughtbot/dotfiles/commit/495326958bdd1ac080fbc685d9eb3e62f8238929)),
and navigating back to your previous directory
([f149484](https://github.com/thoughtbot/dotfiles/commit/f149484269ef98e2bc80b7daa1988e214ddf8e8b)).

## [ESLint Config](https://github.com/thoughtbot/eslint-config)

thoughtbot's [ESLint Config](https://github.com/thoughtbot/eslint-config) is a
batteries-included sharable ESLint configurations for React, React Native,
TypeScript, and Node.js that enforce
[thoughtbot’s JavaScript guides](https://github.com/thoughtbot/guides/tree/main/javascript).

Stephen Hanson ([stevehanson](https://github.com/stevehanson))
fixed a broken image
([50a27a8](https://github.com/thoughtbot/eslint-config/commit/50a27a8f0429a30f6b15b1284e80c9467b5f0d95)).

## [factory\_bot](https://github.com/thoughtbot/factory_bot) 

[factory\_bot](https://github.com/thoughtbot/factory_bot) is a library for
setting up Ruby objects as test data.

Olivier Bellone ([olivier-thatch](https://github.com/olivier-thatch))
added support for models without ID setters in build_stubbed
([cae4973](https://github.com/thoughtbot/factory_bot/commit/cae497357f1e9ff4dadc9836c74a04943771ad72)).

Mike Burns ([mike-burns](https://github.com/mike-burns))
made updates to pass a block to `expect` as needed
([388f93f](https://github.com/thoughtbot/factory_bot/commit/388f93f89ac77115d93a6ec89c96e14e9d2f051e)).  
He also bumped factory\_bot to versions to 6.4.0
([12f246d](https://github.com/thoughtbot/factory_bot/commit/12f246d371ddeb97cfd10b0a0f550e5aacd8bc8b)),
6.4.1
([b3dcdb5](https://github.com/thoughtbot/factory_bot/commit/b3dcdb5b218ab6b595983b9e2cb0a796bd1f211b)),
and 6.4.2
([bd0a10c](https://github.com/thoughtbot/factory_bot/commit/bd0a10c5ab9f93425beeba2ab17e503dceb368ab)). 🎉

[makicamel](https://github.com/makicamel)
made updates to assign `klass` to `defined_traits`
to pass it's class to ActiveSuport::Notifications
([b1d8e4f](https://github.com/thoughtbot/factory_bot/commit/b1d8e4f189652a2dac5c65d282f70739dec3b3c6))
and assign `klass` to global traits when `find_by_name`
([bc7fe7d](https://github.com/thoughtbot/factory_bot/commit/bc7fe7d2ff8da7167a1eeaec8f21dd3d1fa8004a)).

## [factory\_bot\_rails](https://github.com/thoughtbot/factory_bot_rails)

[factory\_bot\_rails](https://github.com/thoughtbot/factory_bot_rails) provides
Rails integration for [factory\_bot](https://github.com/thoughtbot/factory_bot).

Neil Carvalho ([neilvcarvalho](https://github.com/neilvcarvalho))
bump the version to 6.4.2 🎉
([54c7254](https://github.com/thoughtbot/factory_bot_rails/commit/54c72541ac8d9afa2c94274d80597c24112ce054)).

Benoit Tigeot ([benoittgt](https://github.com/benoittgt))
and Leo Arnold ([leoarnold](https://github.com/leoarnold))
fixed an undefined method `config` error seen when testing on Rails 7.1
([79d1ad2](https://github.com/thoughtbot/factory_bot_rails/commit/79d1ad22dd0b77f1f03e872d85a3bbeb2b135a8e)).

[y-yagi](https://github.com/y-yagi)
fixed a link to old files
([8b2a78e](https://github.com/thoughtbot/factory_bot_rails/commit/8b2a78e2fe4867cf698195d0f841926a07c7f166)).

Mike Burns ([mike-burns](https://github.com/mike-burns))
bumped the version of `factory_bot` we depend on
([f9a1e7c](https://github.com/thoughtbot/factory_bot_rails/commit/f9a1e7c97b7bd5d7ee3836c79f964476b92a7c0f)),
bumped to version 6.3.0 🎉
([438d035](https://github.com/thoughtbot/factory_bot_rails/commit/438d035f8e77f52e43fd121cd7568e555c3a4ff5)),
and bumped to 6.4.0 for parity with [factory\_bot](https://github.com/thoughtbot/factory_bot)
([3346305](https://github.com/thoughtbot/factory_bot_rails/commit/3346305320df35eadae4ac942e44fa7adbbfa574)).

## [Flightdeck](https://github.com/thoughtbot/flightdeck)

[Flightdeck](https://github.com/thoughtbot/flightdeck) provides Terraform
modules for rapidly building production-grade Kubernetes clusters following SRE
practices.

Joe Ferris ([jferris](https://github.com/jferris))
allowed Spot capacity type for AWS node groups
([bd8a1e5](https://github.com/thoughtbot/flightdeck/commit/bd8a1e55c4f6dd6a57d721915b07cd46725e9005)),
updated GitHub Actions Node version
([1c751ad](https://github.com/thoughtbot/flightdeck/commit/1c751ad4d104689951404632f36f903a59a123f0)),
updated default manual Terraform to match automatic
([98bd2d2](https://github.com/thoughtbot/flightdeck/commit/98bd2d2583f676bcc7caae5f0275feef890b962e)),
and fixed missing IAM permissions for Fluent Bit
([da40e8b](https://github.com/thoughtbot/flightdeck/commit/da40e8bdec94fb3b862faf4da13ddd4842bdb092)).

Peterson F. dos Santos ([petersonfs](https://github.com/petersonfs))
added new options to configure the cluster
([c06ee71](https://github.com/thoughtbot/flightdeck/commit/c06ee71f141e1c7607232fd509bf351766f5d388)).

[dependabot[bot]](https://github.com/apps/dependabot)
bumped workflow versions of `hashicorp/setup-terraform`
([4b165a5](https://github.com/thoughtbot/flightdeck/commit/4b165a545afbf3158e6bc281aadbc17f5e781fca)),
`actions/setup-node`
([812d928](https://github.com/thoughtbot/flightdeck/commit/812d92880755da28305ed698ffce49a916f8dde8)),
`terraform-linters/setup-tflint`
([b068a4b](https://github.com/thoughtbot/flightdeck/commit/b068a4bfdbd87e9cae6712743aa0a3c03109a076)),
`aws-actions/configure-aws-credentials`
([e33b71a](https://github.com/thoughtbot/flightdeck/commit/e33b71a801148bdff4dfa556c2b8ea411c3752c1)),
and `actions/checkout`
([0ab0e94](https://github.com/thoughtbot/flightdeck/commit/0ab0e94d1aebff29b908c141f73364d2da03a26d)).

Olamide ([OlamideOl1](https://github.com/OlamideOl1))
added an option to create a WAF along with the ingress resource
([10c23c2](https://github.com/thoughtbot/flightdeck/commit/10c23c2cbf5f61b3d3116acedd6f2da738c4375c)),
added allowed and block IP list for WAF
([570ee8b](https://github.com/thoughtbot/flightdeck/commit/570ee8bf697cb41e79ad6c72b7bae9bd59938144)),
and updated ingress WAF variables and set rate limit to enabled by default 
([edd0694](https://github.com/thoughtbot/flightdeck/commit/edd069425698b22d5db76bf9e9e3020cf3556a28)).

## [Form Props](https://github.com/thoughtbot/form_props)

[Form Props](https://github.com/thoughtbot/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](https://github.com/jho406))
fixed nested attributes
([905086e](https://github.com/thoughtbot/form_props/commit/905086e724976a963bd123abe352daf0b820ff55)),
and bumped FormProps version from 0.0.3 to 0.0.4 🎉
([5e3bc08](https://github.com/thoughtbot/form_props/commit/5e3bc08c94d19ccb2c2be1e4da81c55c6c940fb3)).  

He made attribute setting explicit and added a mapping of html attributes => React attributes
([2c5ebd0](https://github.com/thoughtbot/form_props/commit/2c5ebd0d28ce91d88b7f659ac8573a5009c75d0b)),
updated Gemfile.lock
([f25277f](https://github.com/thoughtbot/form_props/commit/f25277fe9e38b09a96fd55a43b734a2582c0c3de)),
bumped FormProps version from 0.0.4 to 0.0.5 🎉
([5317170](https://github.com/thoughtbot/form_props/commit/5317170bd74a1b6d468beb06ec2dd088fdb1c5c7)).  

Johny also updated `format_date` to use presence on empty value for date_field
([f253853](https://github.com/thoughtbot/form_props/commit/f2538536de1d23ad7da96a3fd46c65dabf7e322c)),
added camelize to `association_key`
([0d715be](https://github.com/thoughtbot/form_props/commit/0d715be25dc67791f72ef13a631f8c93d740cb38)),
added the ability to explicitly set a key
([ab0b91b](https://github.com/thoughtbot/form_props/commit/ab0b91b13afe435ad51bbe3b62a51406b3a4b643)),
and bumped FormProps version from 0.0.5 to 0.0.6 🎉
([a701161](https://github.com/thoughtbot/form_props/commit/a7011611380d45ce6c0c4fcbb3c1bb2e1696e3c4)).

## [GoldMiner](https://github.com/thoughtbot/gold_miner)

[GoldMiner](https://github.com/thoughtbot/gold_miner) is a tool for finding
interesting messages in a Slack channel and turning them into a blog post for
the [thoughtbot blog](https://thoughtbot.com/blog).

[dependabot[bot]](https://github.com/apps/dependabot)
bumped `standard` from 1.31.2 to 1.32.0
([967a8c2](https://github.com/thoughtbot/gold_miner/commit/967a8c2c31db067de192a4f40c194cd6ffd8cef4)).

## [Guides](https://github.com/thoughtbot/guides)

thoughtbot's [Guides](https://github.com/thoughtbot/guides) for working
together, getting things done, programming well, and programming in style.

Chad Pytel ([cpytel](https://github.com/cpytel))
fixed a broken link to the inclusive meetings guide PDF
([3a4cabf](https://github.com/thoughtbot/guides/commit/3a4cabfd0abe043369b87be675ba158b6a9dae90)).

Jose Blanco ([laicuRoot](https://github.com/laicuRoot))
added inclusive language and acronyms remarks to our guide for meetings
([4ab5599](https://github.com/thoughtbot/guides/commit/4ab5599a6fd30b0854d566843015b33fc6fc4bc5)).

## [PropsTemplate](https://github.com/thoughtbot/props_template)

[PropsTemplate](https://github.com/thoughtbot/props_template) 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](https://github.com/jho406))
updated rendering to use a method instead of local_assigns
([52d7447](https://github.com/thoughtbot/props_template/commit/52d744713b67567e821097f600a8e4002bdf3645)),
and bumped the version to 0.24.0 🎉
([a784e37](https://github.com/thoughtbot/props_template/commit/a784e376d72aca256985526f32f8e503ab4bfa36)).

He removed the auto camelize lower formatting on keys,
opting for usage to be explicit about the keys being serialized
([1843b0c](https://github.com/thoughtbot/props_template/commit/1843b0c416e6d892c9371472d389f04c4441a080)).
As this is a backward breaking change, Johny bumped the version
past the 0.20's and into 0.30.0 🎉
([112b4d8](https://github.com/thoughtbot/props_template/commit/112b4d887258eff34940692ce118f48244b9c137)).

He removed the `virtual_path_of_template` method
([55ace47](https://github.com/thoughtbot/props_template/commit/55ace47646f2d3b4380180fcacbfe3a49ff37621)),
updated the README
([af03b5b](https://github.com/thoughtbot/props_template/commit/af03b5b4317bbeb680f23e53624d5afde44f7db7)),
bumped the version to 0.31.0 🎉
([315f1ad](https://github.com/thoughtbot/props_template/commit/315f1ad39dee7a45c1ec3e1cb904d561a5f9ab51)),
reverted the removal of `virtual_path_of_template`, instead renaming the method
([919b0bc](https://github.com/thoughtbot/props_template/commit/919b0bc36718293c9e16da814529e4a71be84cc5)),
and bumped the version to 0.32.0 🎉
([8c27c9d](https://github.com/thoughtbot/props_template/commit/8c27c9d9fc2f4d01b6ec386112598ff4e4b07212)).

I have a lot of respect for Johny's regular version updates!
📰 You can read more about the changes in
[NEWS](https://github.com/thoughtbot/props_template/blob/main/NEWS.md).

## [Sentry DSN for AWS](https://github.com/thoughtbot/terraform-aws-sentry-dsn)

[Sentry DSN for AWS](https://github.com/thoughtbot/terraform-aws-sentry-dsn)
creates and rotates Sentry project DSNs using AWS Secret Manager.

[dependabot[bot]](https://github.com/apps/dependabot)
bumped `terraform-linters/setup-tflint` from 3 to 4
([7357b2c](https://github.com/thoughtbot/terraform-aws-sentry-dsn/commit/7357b2c388d88c3593f22310b2e12f8de29468b9))
and `actions/checkout` from 3 to 4
([7e5d7b8](https://github.com/thoughtbot/terraform-aws-sentry-dsn/commit/7e5d7b8f1cdf2ea7de1b0b3e049108092840048e)).

## [Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers)

[Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers) provides
simple one-liner tests for common Rails functionality.

Pedro Paiva ([VSPPedro](https://github.com/VSPPedro))
added ruby 3.3.0-rc1 support
([027db70](https://github.com/thoughtbot/shoulda-matchers/commit/027db7032b44c258ec73a773d655652c05898cc6)).

Amalrik Maia ([amalrik](https://github.com/amalrik))
removed the `with` qualifier on `define_enum_for` matcher
([4886266](https://github.com/thoughtbot/shoulda-matchers/commit/48862663f8d816fd9f09d8e8e4199c7e6d5ee015)).

Matheus Sales ([matsales28](https://github.com/matsales28))
added support for Rails 7.1
([7e069cf](https://github.com/thoughtbot/shoulda-matchers/commit/7e069cf205177dd9d7f057dd6311babbe1a5b190)),
added a feature to give a hint when an unrelated error
is seen with negated `allow_value`
([f2db1f2](https://github.com/thoughtbot/shoulda-matchers/commit/f2db1f2f56b3327e945d343fa19663e59a1ac2ba)),
and removed references to unsupported Rails versions
([58f5077](https://github.com/thoughtbot/shoulda-matchers/commit/58f5077b5ec3c9db41ba237c3481806c08d65e35)).

Matheus also fixed yard undoc warnings
([423eddb](https://github.com/thoughtbot/shoulda-matchers/commit/423eddba81125d1f3e45cdce8c640771bc825caf)),
refactored loading of unit test helpers
([c17c0d7](https://github.com/thoughtbot/shoulda-matchers/commit/c17c0d71b2a3d33f59996f5fb615929487700598)),
fixed a flaky spec on `ValidateAbsenceOfMatcher`
([5d26d0d](https://github.com/thoughtbot/shoulda-matchers/commit/5d26d0dbd7e6b7f910b80c37d14963cb436ad1b0)),
and updated the Rails versions
([3821caa](https://github.com/thoughtbot/shoulda-matchers/commit/3821caa1375096f33c22ff833796825a91df8dac)).

stephann ([stephannv](https://github.com/stephannv))
added a `normalize` matcher
([baabf89](https://github.com/thoughtbot/shoulda-matchers/commit/baabf89127d712855684b351073764026a6c1df1)).

Mamoru TASAKA ([mtasaka](https://github.com/mtasaka))
added a fix to catch ruby3.3 format `NoMethodError` message
([3654e5c](https://github.com/thoughtbot/shoulda-matchers/commit/3654e5ca7fb10dc84a921e7f06b7875eaf8729c3)).

Knut I. Stenmark ([stonefield](https://github.com/stonefield))
added a fix to ensure that validation specs
work for `ActiveModel` without `ActiveRecord`
([5d60245](https://github.com/thoughtbot/shoulda-matchers/commit/5d60245141f4e47b16a5d3e0f1d718d4a9a3efc9)).

Elliot Winkler ([mcmire](https://github.com/mcmire))
graduated as a maintainer of Shoulda Matchers
and moved his contact info to alumni
([0dc6c6d](https://github.com/thoughtbot/shoulda-matchers/commit/0dc6c6d8fae333ac2dfd91e740eacd9a69b21562)).  
Elliot, we thank you for all your hard work over the many years! ❤️

## [Terrapin](https://github.com/thoughtbot/terrapin)

[Terrapin](https://github.com/thoughtbot/terrapin) is a tool for running shell
commands safely, even with user-supplied values.

Matt Jankowski ([mjankowski](https://github.com/mjankowski))
released version 1.0.1 🎉
([fd45f78](https://github.com/thoughtbot/terrapin/commit/fd45f78c97972bfef39e9e8222f2c1c2f930814b)).

## [Terraform EKS CI/CD Pipeline](https://github.com/thoughtbot/terraform-eks-cicd)

[Terraform EKS CI/CD Pipeline](https://github.com/thoughtbot/terraform-eks-cicd)
creates CI/CD pipelines to deploy applications to EKS clusters.

In the terraform workflows, [dependabot[bot]](https://github.com/apps/dependabot)
bumped the versions of `hashicorp/setup-terraform`
([61b656f](https://github.com/thoughtbot/terraform-eks-cicd/commit/61b656fa2b9cc5abfe03e0fd9e90897d2f84c37b)),
`terraform-linters/setup-tflint`
([cda5a3e](https://github.com/thoughtbot/terraform-eks-cicd/commit/cda5a3e7c3c1dc9881b6385af02a4d6a13214e01)),
and `actions/checkout`
([7186918](https://github.com/thoughtbot/terraform-eks-cicd/commit/7186918ef4d31cfbe80698b5d4f2b4d1b2cf32ba)).

## [Upcase](https://github.com/thoughtbot/upcase) 

[Upcase](https://github.com/thoughtbot/upcase) is a Rails application deployed
to Heroku designed to help sharpen your programming skills.

Stephanie Minn ([stephanieminn](https://github.com/stephanieminn))
removed legacy analytics code
([9d07bc6](https://github.com/thoughtbot/upcase/commit/9d07bc64ccc389471ab58aa907661093aa8dc9d5)).

---

✨Have you considered contributing to open source? There's a project out there for
you! Visit our [Open Source page](https://thoughtbot.com/open-source) to learn
more about our team's projects and contributions. While you're there, consider
contributing to one of our projects.
