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