I was wondering how people in the Tapestry community approach this and if
you have any tips on how to deal with this.

In the last couple of  years, I've worked on a couple of Grails projects.
One very useful aspect of running a Grails app has been the Console plugin (
http://grails.org/plugin/console), which basically allows you to have a
"live"  console in your running application. In other words, you can
navigate to a particular URL and you can run scripts against your running
application - whether it's to inspect the state of the application from
within, or it is to manipulate the application (e.g. the approach was made
very useful for migration scripts that work better from the application
domain). Another aspect has been being able to put together ad-hoc reports
(as in, dump a bunch of data to a csv file).  Yet another useful aspect has
been to be able to configure/override application behavior "on the fly",
when there is no opportunity to do an immediate deployment - e.g.
overriding values for configuration keys

Is there an equivalent solution in the Tapestry world ? For running
scripts, it seems that adding a page with an input text area an an area for
the output that would interpret the input as some scripting language (e.g.
Beanshell, js, Groovy, Scala)  and make some tapestry infrastructure
accessible within the interpreter (e.g. being able to look up services by
class or name) should be able to accomplish most of this. In terms of being
able to "reconfigure" the Tapestry application "on the fly" - if there is
access to the Tapestry APIs, can I for example "override" a service just
like would be able to do if I were contributing to the AppModule ? How
about configuration - since a lot of it happens by dealing with Symbol-s,
can those be "overridden" on the fly ?

Granted, such a feature could be a huge security issue as it could allow a
user to run arbitrary code within the application, but I'll leave that to
the side. Let's assume that it is well secured.

I would appreciate any tips / ideas on the subject.

Cheers - Alex K

Reply via email to