Book Image

Layered Design for Ruby on Rails Applications

By : Vladimir Dementyev
4.7 (3)
Book Image

Layered Design for Ruby on Rails Applications

4.7 (3)
By: Vladimir Dementyev

Overview of this book

Ruby on Rails is an open-source framework for building web applications from scratch while focusing on productivity, leveraging the power of the convention-over-configuration principle, and the well-defined model-view-controller pattern, assisting the developers in building useful features. However, this initial simplicity often leads to uncontrollable complexity turning the well-structured codebase into a hardly maintainable mess. This book aims to help you keep the code maintainable while working on a Rails application. You’ll start by exploring the framework capabilities and principles, allowing you to reap the full potential of Rails. Then, you’ll tackle many common design problems by discovering useful patterns and abstraction layers. By implementing abstraction and dividing the application into manageable modules, you’ll be able to concentrate on specific parts of the app development without getting overwhelmed by the entire codebase. This strategy also encourages code reuse, simplifying the process of adding new features and enhancing the application's capabilities. Additionally, you’ll explore further steps in scaling Rails codebase, such as service extractions. By the end of this book, you’ll be a code design specialist with a deep understanding of the Rails framework principles.
Table of Contents (20 chapters)
1
Part 1: Exploring Rails and Its Abstractions
7
Part 2: Extracting Layers from Models
11
Part 3: Essential Layers for Rails Applications
17
Index
18
Gems and Patterns

Preface

Ruby on Rails is a powerful and influential open source framework specifically designed to facilitate the rapid development of web applications. As a full stack framework, Rails provides developers with the tools necessary for frontend and backend web development, allowing for the seamless integration of HTML, CSS, JavaScript, and server-side scripting.

At the heart of Rails is the adoption of the Model-View-Controller (MVC) architectural pattern. This pattern divides an application into three interconnected parts: the Model, which pertains to the application’s data and business logic; the View, responsible for the output of the information; and the Controller, which manages the flow of data between the Model and the View.

Alongside MVC, another central pillar of Rails is the convention-over-configuration principle. This philosophy manifests in many predefined settings and defaults within the Rails framework, significantly reducing the number of decisions a developer has to make.

Sticking to MVC-based framework components and leveraging conventions is The Rails Way. It aims to streamline the development process, allowing developers to focus on crafting product features rather than getting burdened by the complexities of taming the framework and its components.

However, as with most things, this initial simplicity can be a double-edged sword. It can sometimes spiral into an intricate labyrinth of complexities, potentially transforming a neatly organized code base into a difficult-to-manage, convoluted mess. This book seeks to equip you with strategies and techniques to help you control your Rails application’s complexity while ensuring maintainability.

We start by exploring the framework’s capabilities and principles, allowing you to utilize Rails’ power fully. Then, we start the layering process by gradually extracting and introducing new abstraction layers in a way that plays nicely with The Rails Way. Thus, the ideas expressed in this book could be considered The Extended Rails Way, the patterns and approaches that can help you enjoy the framework and increase Ruby developers' happiness at scale.

As you conclude this journey, you’ll emerge as a proficient specialist in code design, possessing an in-depth understanding of the Rails framework’s principles.