Mange/roadie
71.3
Strong · 19 September 2026
1.7k
lines of production code
Ruby
primary language
1
measurement over time
What this system is
Roadie is a Ruby library designed to inline CSS styles into HTML documents, primarily for use in email generation. It features a modular architecture with pluggable asset providers for fetching stylesheets from various sources and configurable URL rewriters. The system handles the transformation pipeline, including specificity management and media query merging, while supporting multiple output formats and caching strategies.
How it got here
2009 — Rebranding to Roadie
4 changes.
The project was rebranded from Shemail to Roadie, involving a repository restructuring with modern tooling and a migration to RSpec 3. This period saw the removal of legacy inline CSS styling features and the introduction of a new provider system and asset scanner.
2010–2011 — Roadie 5.3.1 internal rewrite
4 changes.
This period focused on a comprehensive internal refactor of the Roadie library, introducing a new architecture with dedicated domain objects and a flexible asset provider system. The work included implementing new URL handling, transformation pipelines, and HTML5 support, accompanied by the establishment of a robust development environment and an extensive RSpec test suite to verify the new components.
2013–2026 — Test coverage and dependency compatibility
4 changes.
This period focused on expanding test coverage by adding shared examples for asset providers, cache stores, and URL rewriters, alongside new CSS styling fixtures. It also established continuous integration support for multiple major versions of the css\_parser dependency to ensure backward and forward compatibility.
Removals
Removal of inline CSS styling feature
The inline styles capability for Shemail has been removed. The \lib/shemail/inline\_styles.rb\ file, which previously injected CSS styles directly into HTML email parts using Nokogiri and CssParser, is no longer present. Users relying on automatic inline style application for their emails will no longer have this feature available.
lib/shemail · high confidence
Behavioural changes
Renamed gem from Shemail to Roadie
The library has been renamed from Shemail to Roadie. The old entry point \lib/shemail.rb\ has been removed and replaced with \lib/roadie.rb\, which now serves as the main module and requires the updated set of components including the new provider system, asset scanner, and URL rewriters.
lib · high confidence
Repository restructured with modern tooling and updated documentation
The repository has been reorganized to support modern development workflows. Configuration files for \.gitignore\, RuboCop (using \standard\), Solargraph, and StandardRB have been added, with the Ruby target version set to 2.7. Documentation has been migrated from Textile to Markdown (\README.md\), and the Changelog has been formalized in \Changelog.md\. Legacy files such as \init.rb\ and \readme.textile\ have been removed, and the license file has been renamed to \LICENSE\. The gem is now in passive maintenance mode.
(repo-wide) · high confidence
Roadie 5.3.1: Complete internal rewrite with new asset provider system and URL handling
This release introduces a comprehensive internal refactor of the Roadie library, updating the gem to version 5.3.1. The core inlining engine has been replaced with a new architecture featuring dedicated domain objects for CSS (Stylesheet, StyleBlock, StyleProperty, Selector) and a new AssetScanner that extracts styles from both inline \<style\> tags and \<link\> elements. Asset retrieval is now handled by a flexible provider system, including a new FilesystemProvider, NetHttpProvider (with host whitelisting), PathRewriterProvider, CachedProvider, and NullProvider, all managed via a ProviderList. URL rewriting has been separated into its own UrlGenerator and UrlRewriter classes, which now correctly handle scheme-less URLs and anchor links. The transformation pipeline is exposed via before\_transformation and after\_transformation callbacks, and the Document class now supports HTML5 doctypes by default, XHTML/XML output modes, and options to keep uninlinable CSS or merge media queries.
lib/roadie · high confidence
Test coverage
Added RSpec shared examples for asset providers and cache stores; Added comprehensive test suite for Roadie core components; Added shared test suites for asset providers and URL rewriters; Added test fixtures for CSS styling scenarios; Extracted custom RSpec matchers and added a test asset provider; Migrated test suite to RSpec 3 and modernized test infrastructure.
Dependencies
Add CI gemfiles for css\_parser 1.x, 2.x, and 3.x compatibility
New gemfiles have been added to the gemfiles directory to explicitly pin the css\_parser dependency to major versions 1, 2, and 3 (specifically \~\> 1.4, \~\> 2.0, and \~\> 3.0). These files evaluate the root Gemfile and are intended to enable continuous integration testing across these different major versions of the css\_parser library, ensuring backward and forward compatibility.
gemfiles · high confidence
Initial gem specification and development environment setup
The project introduces its core gemspec (roadie.gemspec) and a Gemfile to define dependencies and development tooling. The gem requires Ruby 3.3 or higher and depends on nokogiri (\~\> 1.15) and css\_parser (\>= 1.4, \< 4.0). Development dependencies include rake, rspec (\~\> 3.0), rspec-collection\_matchers (\~\> 1.0), webmock (\~\> 3.0), and standardrb, while the Gemfile adds simplecov and solargraph for CI and local development respectively.
(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
Baseline
- First survey — no prior run to compare against. CAI 71.
Lenses
- Code Health 100
- Architecture 100
- Maturity 55
- Readiness 74
- Security 96
Changes since last survey
- 300 commits — 268 feature/other, 32 fixes
By area
- (root) — 152 commits
- lib/roadie — 63 commits
- (repo) — 43 commits
- .github/workflows — 13 commits
- spec/lib — 11 commits
- spec/support — 5 commits
- gemfiles/css_parser_1.gemfile — 3 commits
- spec/spec_helper.rb — 2 commits
- .github/dependabot.yml — 1 commit
- autotest/discover.rb — 1 commit
- gemfiles/css_parser_1.gemfile.lock — 1 commit
- gemfiles/css_parser_2.gemfile — 1 commit
- lib/roadie.rb — 1 commit
- spec/fixtures — 1 commit
- spec/integration_spec.rb — 1 commit
- spec/railsapps — 1 commit
Notable commits
- fix: ! Fix copy & paste error in gemspec
- fix: ! Fix issues reported by standardrb
- fix: ! Fix issues reported by standardrb
- fix: ! Fix missing gem source in new gemfiles
- fix: ! Fix new gemfiles missing stuff that's only in root Gemfile
- fix: ! Fix standardrb violations
- fix: ! Fix standardrb violations
- fix: "Fix" CI by disabling linter (requires Ruby 2.6)
- fix: * Update GH CI about ubuntu, actions/checkout, fix lint job
- fix: Add scheme to schemeless URLs to help email clients (fixes #104)
- fix: BUG: CSS was mutated when parsing it
- fix: Fix a few errors in README; Rubinius support no longer experimental
- fix: Fix build on JRuby
- fix: Fix in ruby 2.0
- fix: Fix invalid example code in README.md
- fix: Fix last errors and deprecations from RSpec 3
- fix: Fix linter error
- fix: Fix release version in changelog
- fix: Fix selector parsing by removing BOM
- fix: Fix some errors in README thanks to @ShPakvel
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Mange/roadie 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 19 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 05e4e42a147e21bf6e113728b3fd4424cd5c9b8b — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.