Books
- Component-Based Rails Applications by Stephan Hagemann
- Modular Rails by Thibault Denizet
Talks
- Using Rails Engines to Supercharge Your Team (RailsConf 2023) by Austin Story, 2023
- All you need is Rails (Engines): Compartmentalising your Monolith by Julián Pinzón Eslava, 2023
- Between monoliths and microservices by Vladimir Dementyev, 2020
- Get started with Component-based Rails applications! by Stephan Hagemann, 2015
- Refactoring Towards Component-based Rails Architectures by Stephan Hagemann, 2014
- Feature Flagging with Ruby on Rails Engines by Enrico Teotti, 2014
- Component-based Architectures in Ruby and Rails by Stephan Hagemann, 2013
- How I architected my big Rails app for success! by Ben Smith, 2013
- Rails Engines in Large Apps by Enrico Teotti, 2013
- Wrangling Large Rails Codebases by Stephan Hagemann, 2012
Blog Posts
- Enforcing Modularity in Rails Apps with Packwerk by Maple Ong, September 23, 2020
- Under Deconstruction: The State of Shopify’s Monolith by Philip Müller, September 16, 2020
- Enforcing Modularity inside a Rails Monolith by Thomas Pagram, August 11, 2020
- Spark Joy by Running Fewer Tests by Jessica Xie, June 11, 2020
- How to Break Apart a Rails Monolith by Kelly Sutton, March 12, 2020
- Creating Local Rails Engines by David Amrani, August 11, 2019
- Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity by Kirsten Westeinde, February 21, 2019
- The Modular Monolith: Rails Architecture by Dan Manges, January 13, 2018
- Rails components — neither engines nor gems by Paweł Pacana, September 14, 2017
- Physical separation in Rails apps by Andrzej Krzywda, September 14, 2017
- Engine-based Rails Apps: Pros & Cons by Ben Roesch, January 25, 2016
- The little engine that could: Part II by Sarah Branon, May 18, 2015
- The little engine that could by Sarah Branon, April 25, 2015
- Reduce memory footprint requiring portions of your component based Rails application with Bundler by Enrico Teotti, January 27, 2015
- Merits of strict separation in component-based Rails applications by Stephan Hagemann, November 20, 2014
- Gemfile hierarchy in Ruby on Rails component based architecture by Enrico Teotti, November 19, 2014
- Deploy parts of a Ruby on Rails application by Enrico Teotti, August 4, 2014
- Options for Admin Engines in Component-based Rails Applications by Stephan Hagemann, June 4, 2014
- Rails 4 Engines by Brian Leonard, February 11, 2014
- RubyMine 6 for component-based Ruby and Rails applications by Stephan Hagemann, December 13, 2013
- Maintainable and Scalable Systems with Rails Engines by Kevin Rockwood, December 10, 2013
- Writing Rails engine rspec controller tests by Ben Smith, September 14, 2013
- Faking authentication for capybara tests within a Rails engine by Ben Smith, September 4, 2013
- Building and maintaining a large Ruby on Rails application for 3 years by Enrico Teotti, July 16, 2013
- Moving db tables between Rails engines by Ben Smith, June 7, 2013
- Rails autoloading for your gem by Stephan Hagemann, May 29, 2013
- Leave your migrations in your Rails engines by Ben Smith, May 8, 2013
- Migrating from a single Rails app to a suite of Rails engines by Stephan Hagemann, March 13, 2012
- Unbuilt Rails Dependencies: How to design for loosely-coupled, highly-cohesive components within a Rails application by Mike Barinek, February 21, 2012
- Rails Contained: A Container for Web Application Development and Deployment by Mike Barinek, February 21, 2012
Tools
- cobra_commander - Tools for working with Component Based Rails Apps: Includes tools for graphing both Ruby and Javascript components in an application and their relationships, as well as selectively testing components based on changes made.
- transdeps - Gem to find inconsistent dependency versions in cbra apps (Check out how to bump the version of a dependency across all components with this gist)
- cobratest - Gem to run tests in cbra app based on git changes in components
- cobradeps - Gem to print dependency graph of cbra apps
- Flexport Rubocop - Rubocop Rules enforcing component boundaries
- Packwerk - Enforce engine boundaries (link doesn’t work yet, to be released later in September)
- CBRA Contracts - CBRA Contracts provides a DSL and “convention over configuration” approach to define contract interfaces between application components
Sample Applications
- The Next Big Thing - Small sample app showing all the mechanics of Component-based Rails
- Rails Engines Example - Rails engines example by Task Rabbit
- CBRA book code - Code to the Component-Based Rails Applications book, which includes many componentized versions of one sample app
Mailing Lists / Forums
- Components in Rails Google Group - largely inactive, but significant public archive with ~90 members
- Ruby/Rails Modularity Slack
CBRA-related collections
- RMM - Rails Modular Monolith - maintained by HocNest
- Modular Rails
Please email stephan@stephanhagemann.com to have resources added to this list or submit a PR!