This Week in Open Source (October 13, 2023)

Sara Jackson

I like to think the charm of these posts is the moving target of how much time will be covered. In this edition of “This Week In Open Source,” we cover the last month of updates to thoughtbot’s open source repos. And there was a lot. Grab a snack and something nice to drink while we cover all the details.

Commits were merged to the following, comically long list of repos (now with links to navigate to their section):

Administrate

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

Jordan Brough (jordan-brough) added Administrate::Punditize methods as module methods (84badf2).

CapybaraAccessibilityAudit

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) added support for Capybara’s modal block helpers like accept_alert (3d12b85), specified minimum Ruby and Rails versions (2be23bc), and released version 0.1.1 🎉 (76d4544).

thoughtbot design system

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

dependabot[bot] bumped the version of sass from 1.66.1 to 1.69.0 (bdcda71, 0bb14e7, f694a64), and bumped the version of postcss (0c925fe).

Form Props

It’s 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) increased the minimum required Ruby version to 2.7 (d632fab).

GoldMiner

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

Matheus Richard (MatheusRich) bumped the versions of zeitwerk (35f6c9b), timecop (736a29c), standard (bb9aec4), and slack-ruby-client (7afb1a7).

He also introduced a GoldContainer data value to wrap gold nuggets and include some metadata (ff2efa2) and fixed an id typo (9f2b0ba).

Guides

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

Dorian Marié (dorianmarie) updated the formatting of Code Review guidelines for better readability (5f957c0).

Humid

Humid is a lightweight wrapper around mini_racer used to generate Server Side Rendered (SSR) pages from your js-bundling builds.

Johny Ho (jho406) updated the puma config in the README (c1d0e3d).

Laptop

Laptop is a shell script to set up a macOS laptop for web and mobile development.

Chad Pytel (cpytel) validated and documented support for macOS Sonoma (6e51157).

PropsTemplate

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) added Rails 7.1 to the test matrix (509b34d).

Ruby Science

This repo contains our book, Ruby Science, the reference for writing fantastic Rails applications.

Chad Pytel (cpytel) has been updating the content and examples in preparation for a 2023 version. He made some minor content updates for 2023 (47a2747), removed the out of date product directory (3d7750a), and regenerated the website with minor updates (2f0f752).

Select Your Own Seat (Superglue)

Select Your Own Seat (Superglue) is an example of how to develop an interactive web page using: Rails, Superglue, Superglue’s Unobtrustive JavaScript, React, and Redux.
The commit history is intentionally meticulous and verbose, and serves to compare and contrast with equivalent commits built in Stimulus and Turbo.

Johny Ho (jho406) was busy this month, keeping the app in lockstep with its Stimulus/Turbo counterpart.

He added full height for the Superglue app (9bdbf86), rendering of the application’s layout Start here (db39dd4), rendering of seats for a venue with SVG elements (2216708), a system test for viewing a seat’s details (138eee0), the seats#show route and action (f547d22), and inline SVG (2067cd6).

Updates to seat selection include functionality to add a seat selection to the shopping cart (918fd12), unselecting a seat removes it from a visitor’s cart (428af14), unselecting a seat from a dialog (4bcbac1), replacing the seat <svg> elements with <use> (f35b288), and adding <symbol> for a selected seat (a2f6723).

Improvements to the map include adding a legend for the map’s symbols (393e8db), functionality to switch floors from the map (6eda487), filtering seats by price (a01f87f), panning and zooming to the SVG map element (ca516c3), map zoom controls to seats/index (b6e8ef1), behavior to zoom in and zoom out buttons (965e9c2), persisting the map across page loads (9fe1972), and refactoring SeatingMap into its own component (8397aa2).

Johny also introduced a loading indicator (183663e), and added dynamic hiding/showing of the loading spinner (8917239).

He made some enhancements in navigation to seats#show (016c142), the seat selection state (97903bd), and price filtering (0638417).

He also added handling price filtering <form> reset events (0aee530), functionality to manage filter query parameters with push state (6aad18d), and the ability to navigate when the <dialog> element closes (7d0cb9a).

Last, but not least, Johny enabled server side rendering of HTML (cd931af), set system tests to execute without JavaScript (22eac68), and updated the README (a3504f6).

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.

Samuel Giddins (segiddins) refactored how test methods are calculated to reduce intermediary allocations (9c4a523).

Shoulda Matchers

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

y-yagi bumped the version of appraisal (c17bac4).

Superglue

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

Johny Ho (jho406) transitioned superglue to use redux toolkit (4218841), added Rails 7.1 to tests (ef7cb15), removed support for older actionpack and activerecord (5a7fb0f).

He also updated the documentation (1664d9d), released version 0.50.0 🎉 (17490eb), and clarified hydration instructions in the docs (83ef72c).

Suspenders

Suspenders is a CLI for creating Rails apps with thoughtbot defaults.

Sean Doyle (seanpdoyle) configured Standard to use Ruby 3.0 (813fc9e), and removed timecop in favor of travel_to (55cb5c2).

Upcase

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

Chad Pytel (cpytel) removed Skylight (7a61544).


✨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.