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

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


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!


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: