On Tuesday, April 23rd, I gave a brief lightning talk about our most recent experiences with Rails Engines.
There were some great talks and questions asked during the session. One question was "How do you identify components in your application that should be extracted to an engine?"
Basically, you should apply the same principles to engine development as you do regular, object oriented development. Don't repeat yourself, and identify opportunity for abstraction. If you find yourself building the same functionality across many different Rails apps, there is likely opportunity for you to extract a Rails engine.