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.