How to make an extendable application


This is a question aimed to all who have created their own CMSs.

What is the correct way to go about making a reusable CMS? We all must be doing this, creating a new CMS for each site we do is prohibitvely expensive.

Going through the Radiant source I see the majority of the code is kept in /app. Won't this make it difficult to update the CMS code once it has been interleaved with the rest of the app?

A plugin? What about a seperate set of migrations... we can't mix the CMS migrations and app migrations..

Engines? Seem to be the best solution at the moment.. (What I currently use)

Thoughts? How does everyone do this?... or think they should be doing it?

ta -henry

Excellent question - I'm wondering the same thing myself - do you write a plugin with a generator that gets you going but then relies upon method calls IN the plugin's library perhaps?

The concept of reusable modules is one very nice feature of Django that I like - there's got to be something similar in Rails!


Hi Wes,

I have the answer. The Rails ideology of convention over customisation is all well and good until you find an area lacking a convention. Engines is the way to go at the moment. I suspect principles will be taken from engines and made core eventually, if the poor author of Engines finally pursuades everyone they're plugins and not an engines!

cheers -h

Thanks for the reply - yeah it looks like the engines guys take a beating. :slight_smile:


All the engines plugin does is make the plugin system a little bit more flexible, really. Possibly some parts will be adopted, others certainly wont, since it exists to serve a slightly different development environment than that of the Rails core team.

This is the nature of open source - we make it work the way that serves our needs best :slight_smile: