Will,
You really are asking hundred-dollar questions, some of which are the
same ones I’ve been asking. I’ve been hearing that Radiant is a CMS and
that it is primarily geared toward serving up content. That’s true.
However, like you, I have the need to integrate other “pages” into my
site that interface with the user (allowing him to logon, complete a
form, do data entry, etc.). Basically, what you’re wanting is a hybrid.
You want to capitalize on what Radiant does well and interject in a few
areas with what Rails does well. At least, that’s my goal.
I’ve really toiled over this wondering what would be the best practice.
Making loose use of the 80:20 rule, 80% of my needs are met by Radiant
in excellent fashion. However, 20% of my needs are not. They are,
however, met by Rails which–go figure–just so happens to be what
Radiant was built on! This naturally has me asking: If Rails is right
there under the hood, how come I can’t easily leverage it for my
custom pages? Additionally, why do I have to sacrifice one for the
other. Can’t I have “Radiant on Rails” and make use of both? I haven’t
found the obvious answer at this point, though I would be all too happy
to hear what others are doing. Or even if this is a typical problem,
which, perhaps, it isn’t.
Here’s what I ultimately decided to do. It may not be the best choice,
but it’s what came to mind. First, I started with Radiant as content
management is the core of my particular site. Now, I am getting ready
to transition into the next phase, where I will plug into the site the
user-interactive pages. Basically, I’m going to write a separate Rails
application that accesses the same Radiant database. (I’m using the
same database since it already has the app-specific tables for which I
added back-end interfaces into Radiant.) I’m going to overlay the Rails
app on top of the Radiant site. That is, I’m going to (attempt to) use
Apache mod_rewrite to properly dispatch incoming URLs to the right
application: RadiantCMS or CustomRailsApp. I’m going to attempt to make
the pages in the CustomRailsApp look like the pages found in Radiant.
I’m going to attempt to disguise the URLs so that the custom pages look
like they are part of the same Radiant site. The idea is to make these
two separate apps (each running on their own mongrels) appear seamlessly
integrated.
I don’t feel good about this. It feels like a kludge. What I’d like to
do is write extensions–just like those I’m already starting to write on
the back end–for the front end. I’d like to be able to do this within
the context of a Radiant page so that I can take advantage of Radiant’s
offerings (snippets, custom tags, layouts, etc.) and Rail’s offerings
(simplified CRUD). If I were a Ruby/Rails veteran I’d develop just this
sort of functionality/feature. Unfortunately, I’m still relatively
green and so I’m looking at more basic alternatives.
It’s been recommended that I create custom tags to accomplish some of
this. I don’t like the idea. Why am I writing custom tags to do
something that Rails already knows how to do? Writing custom tags to
accomplish Rails CRUD operations feels ludicrous. I feel like that
would be learning Chinese to tell an Chinese-English interpreter to tell
my English speaking friend something that I could just tell him myself.
I do wish to make it clear: I think Radiant is superb. I love Radius,
the simplicity of page parts, and its extensibility. It’s just inches
away from being incredible. It’s a matter of lessening the division
between itself and Rails so that hybrid sites won’t be such a difficult
matter.
If you run into any good ideas, I’d like to hear them. Who knows, maybe
“front-end extensions” won’t be far off…
Respectfully,
Mario T. Lanza