thoughtbot/suspenders
55.9
Adequate · 28 September 2026
647
lines of production code
Ruby
primary language
2
measurements over time
What this system is
Suspenders is a Ruby gem that generates new Rails applications based on thoughtbot's best practices. It provides a command-line interface to scaffold projects with PostgreSQL, Sidekiq, and specific development tooling, while also including a utility to consolidate and tidy Gemfile groups. The system is tested via RSpec and uses Standard for code linting.
How it got here
2010 — Initial gem release and test migration
6 changes.
This period marks the initial release of the Suspenders gem, establishing its core structure and development dependencies. The work focused on modernizing the project's infrastructure by migrating the test suite from Cucumber to RSpec and replacing legacy setup scripts with streamlined automation tools.
2011–2026 — Suspenders CLI and library foundation
7 changes.
This period established the core Suspenders library and its command-line interface, introducing features such as Ruby 3.2+ enforcement, Gemfile consolidation, and Sidekiq integration. The work focused on building the foundational module structure, adding RBS type signatures, and implementing a comprehensive RSpec test suite to verify CLI behavior and gemfile management logic.
Features
Add CLI executable with version and new app commands
The \exe/suspenders\ executable is introduced, enabling users to run \suspenders -v\ to display the current version and \suspenders new APP\_NAME\ to generate a new application. The script validates arguments, ensuring exactly one command is provided, and delegates execution to the underlying CLI logic while handling errors gracefully.
exe · high confidence
Initial Suspenders library entry point
The Suspenders library now exposes a main entry point that loads the version information, command-line interface, and gemfile consolidator components, establishing the foundational module structure for the tool.
lib · high confidence
Introduce Sidekiq background processing and development seed tasks
Generated applications now include Sidekiq for background job processing, configured with Redis support and a development-only N+1 query detection middleware (Prosopite). A new development seeder module and associated Rake tasks (\development:db:seed\ and \development:db:seed:replant\) are added to manage seed data in development, alongside Procfile templates for running web, worker, and release processes.
lib/templates · high confidence
Suspenders 20260325.0 introduces CLI, Gemfile consolidation, and Ruby 3.2+ requirement
Suspenders has been updated to version 20260325.0, which now enforces a minimum Ruby version of 3.2.0. This release introduces a new command-line interface (lib/suspenders/cli.rb) that generates new Rails applications using a PostgreSQL database, skipping test setup and Solid features, while applying a custom web template. Additionally, a new Gemfile consolidator (lib/suspenders/gemfile\_consolidator.rb) has been added to tidy and merge duplicate gem groups within Gemfiles, improving consistency in generated projects.
lib/suspenders · high confidence
Removals
Removed shell step definitions for rake task execution
The step definitions for running rake tasks and verifying their success in the shell environment have been removed from the test suite. This change eliminates the ability to execute rake tasks via the 'I run the rake task' step and check for successful responses via the 'I see a successful response in the shell' step, likely as part of a broader cleanup or migration of test infrastructure.
_features/step\definitions · high confidence
Behavioural changes
Add RBS signature for Suspenders module
A new RBS type signature file (sig/suspenders.rbs) has been added to define the Suspenders module, specifically declaring the VERSION constant as a String. This provides static type information for the Suspenders component, aiding in type checking and IDE support for Ruby code that utilizes this module.
sig · low confidence
Migrate test suite from Cucumber to RSpec and Standard
The project's test infrastructure has been updated to use RSpec and Standard instead of Cucumber. The Rakefile now invokes \rspec\ and \standard\ tasks, and a new \.rspec\ file configures RSpec to use documentation formatting, color output, and require \spec\_helper\. Additionally, \.gitignore\ has been updated to exclude RSpec status files and coverage directories, while the old \test\_project\ git submodule has been removed.
(repo-wide) · high confidence
Removal of Cucumber feature file for rake clean tests
The Cucumber feature file \features/rake\_clean.feature\, which previously verified that rake tasks like \db:create:all\, \db:migrate\, and \cucumber\ executed successfully in a suspended project, has been removed. This deletion is part of the broader migration away from the Cucumber testing framework.
features · high confidence
Removed obsolete spec/expectations require in Cucumber support
The \features/support/env.rb\ file has been deleted, removing the \require 'spec/expectations'\ line. This cleanup reflects that the spec/expectations library is no longer needed for the test suite, likely as part of the broader migration from Cucumber to RSpec.
features/support · medium confidence
Replaces legacy 'suspension' generator with new 'setup' and 'qa' scripts
The legacy \bin/suspension\ script, which previously scaffolded new projects by cloning a remote template and running manual gem installations, has been removed. It is replaced by \bin/setup\ for streamlined local environment configuration (running \bundle install\) and \bin/qa\ to automate the creation of a QA environment. A new \bin/console\ script is also added to facilitate interactive experimentation with the gem using IRB.
bin · high confidence
Test coverage
Added RSpec test suite for Suspenders CLI; Added tests for Gemfile group consolidation.
Dependencies
Initial release of Suspenders gem with development tooling
This change introduces the initial version of the Suspenders gem, a tool for generating new Rails applications based on thoughtbot's best practices. The gemspec defines the core package metadata, while the Gemfile establishes the development environment dependencies, specifically locking RSpec to version 3.13.2 for testing and Standard (via RuboCop) to version 1.31.2 for code linting.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 63 → 56 (-6.7)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.
Lenses
- Code Health 98 → 98 (+0.0)
- Architecture 69 → 66 (-3.3)
- Maturity 59 → 59 (+0.0)
- Readiness 55 → 41 (-13.5)
- Security 92 → 93 (+1.6)
New (3)
- Inconsistent arity for the same operation. Similar to CLI, the call method exists in two forms with different argument requirements, creating ambiguity about whether content is required at call time or initialization time.
- Inconsistent arity for the same operation. The CLI class exposes two methods with the same name but different required arguments, which can be confusing regarding whether the app name is required or optional.
- No ADRs found
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
thoughtbot/suspenders was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 99909c1fbf0bab74d9cddfd61e34a9a67c93ee41 — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.