About this guide
This is a project to define a sustainable architecture for software development in Ruby on Rails. It is a collection of ideas, lessons, and best practices that allows Rails apps to be easy to change and acommodate new features.
In fast growing teams, Rails apps need to be maintained and extended while running flawlessly to best serve the business and its customers. Defining an architecture that allows sustaining constant modifications is a software design challenge faced by engineering teams everyday.
From that challenge comes useful practices and patterns proven to help escalate software development for the long term. This guide is an initiative intended to formalize a few of these common practices, particularly around input validation, use case coordination, and data modelling/persistance.
This guide is not the definitive architecture for Rails. It is simply a good starting point. The proposed layers are intended to be used as specified, or as inspiration to help developers design soluations for their own needs. The goal of this project is not to be perfect; rather, it recommends practices with thoughtful trade-offs that can pay for themselves in the long run.
I hope the ideas documented in this Guide can help you and your team deliver great products built with Rails, in a sustainable, happy, and fun journey.