I was really happy to find somebody had developed a way to productize
applications
(Peak Obsession)
before engines came around. Since then they’ve become out-of-date, but
it seems like the engines code would be a good place to start to try
and get productization working again. Anybody have any ideas on how I
could best accomplish post rails 1.0 productization? James?
In some ways productisation and the engines plugin seem similar, but
they are actually almost opposite. Productisation allowed a single
application to appear like it was many applications, whereas
developing engines lets you share distinct parts of an application
with other ones (but these applications remaining quite distinct).
So - how to achieve post-rails productisation? Probably by writing a
plugin, I’d imagining. If productisation means changing the template
and views only, this shouldn’t be too tricky, and the original
productisation patches can probably be repackaged. If you want your
‘productised’ applications to have selective access to various
controllers and model objects, it’s going to be a bit harder (and
probably more work that it’s worth).
The way I see it, the ideal productization would be much like engines,
but on the other side of the application–in a way, engines that
override the application. That’s why I thought to look at engines. I
imagine this would be a new plugin, but I figured a lot of it could be
based on engines code.
I suppose an alternative would be to make the application that would
be productized an engine that depended on other engines. Each instance
would be their own application. This seems like it could work. All the
other engines can be started in the app engine. App specific configs
can be in the app engine… hmm, sounding better the more I type.
I guess that leaves one thing… routes. Can we figure out a clever
way to solve the routes issue? What if engines could draw their own
routes… then in the application route map we’d say something like
Engines.route :my_engine, map or even Engines.route :all, map, which
would pass the map object to engines to apply connections to.