This book is 100% complete
Completed on 2018-08-16
About the Book
(This book is currently in a "beta" state, with some medium-sized changes coming to its code in the near future. Hence the "95% complete" part. I'd still love for people to read it in the meantime though!)
The default structure of Rails applications hasn't changed all that much in over a decade. And with good reason: this directory structure makes it easy to jump into building a Rails application.
While I agree that this way is still extremely simple and great for getting started within a Rails application, I do not agree that this is the best way to organise a Rails application in 2018 with long-term maintenance in mind. A decade of Ruby development has produced some great alternatives to Rails' MVC directory structure that are definitely worthwhile to consider.
The `rom-rb` gems allow us to interact with a database with just as much ease as Active Record, but with the added benefit that persistence and business logic aren't bundled together in the same class.
The `dry-rb` gems allow for splitting the validation logic away from the business logic's class (dry-validation) and also provides a sensible alternative to the community-wide pattern of service objects (dry-transaction).
This guide covers how you would go about integrating these gems into a brand new Rails application, building features in an iterative fashion.
- Where did this book come from?
- Who is this book for?
- Where Rails falls down
- The problems with Active Record Models
Getting started with ROM
- Introducing ROM
- Let there be ROM
- Repository in the middle
Rails, meet ROM
- Generating our first ROM-powered relation, migration, repository and model
- Connecting a Rails controller with ROM
- Showing a particular project
Validating projects during creation
- A small interlude about that contributors method
- Creating a validator
Let’s talk about service objects
- Building our first transaction class
- Integrating the Projects::Create class with the controller
- Refactoring the transaction class one step further
Adding tickets and users
- Creating a tickets repository, relation, model and migration
- Creating all the parts for users
- The contributors method
- Finish the CRUD actions for the ProjectsController
- Add a TicketsController
- Add Devise to the application
The Leanpub 45-day 100% Happiness Guarantee
Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
See full terms...