I am currently working on modifying an existing large rails app. I am customizing some of the look and feel and extending functionality.
The app is under current development and I wanted to be able to take advantage of bug fixes or improvements, without impacting my customizations. Or at least minimizing that impact.
Being fairly new to Rails, I surveyed the landscape and thought that building my customizations as an engine would be a good way to go. (I was wrong, because engines have a hard time reaching out and modifying the application that they are part of. At least that seemed to be a non standard use of engines from what I can find.) The author of Modular Rails has some good blog posts about engines and modularity, so I bought his book.
Pluses:
- Good overview of how to extend three major components of rails app, models, views and controllers
- Easy reading style
- Leverages existing gems like deface
- Mentions testing
- Starts from first principles and then later gives you a gem to speed up development
- Not too long
- Information on setting up your own gems server
Minuses:
- Focus on ‘greenfield’ apps. No mention of integration with existing monoliths.
- Uses nested modules, unlike every other engine article out there
- Assumes relatively advanced knowledge of rails
- Fair bit of fluff–lots of ‘mv’ commands
- Extra charge for source code
All in all I am glad I read this book. It didn’t fit my needs, but it didn’t promise that either. I found it a good overview of the engine concept, even if he did do some things in a non standard manner and was a bit verbose about unix commands.
If you have done more Rails development, it will be more useful, and it is a great way to think about building new freestanding applications. I haven’t surveyed the entire rails book landscape but I haven’t found anything out there focusing on Rails engines that is better.


Another year slipped by! They seem to come faster and faster, just as promised by all the old men in the comic strips I read when growing up.