Recently, I tested Ruby on Rails. By testing, I means I decided to use Rails to develop the administration tools the backend of a web site (mainly a CRUD application). I wanted to compare Rails to Tapestry in term of development time for such a thing.
Even if Rails is a nice framework and allow to quickly develop web application, I’m not sure I will switch over from Tapestry to Rails. In fact, with my actual Tapestry knowledge, there are things I found easier to do with Tapestry compare Rails (but I admit it, my Rails knowledge was very limited).
It’s true that Tapestry as it is, is missing some of the facilities existing in Rails for developing CRUD application (like the scaffold generation). Although, tools like Trails or cognition are solving part of this issue.
Of course, helper methods like dynamic find_by in Rails are really helpfull and eliminate repetitive coding and Rails is plenty of such “tricks”. I think that if Trails had a set of such helper methods (and it probably has already some of them), it would really compete with Rails.
I didn’t test the Ajax integration between in Rails and again it’s probably a point where it’s really simple with Rails and where it should be really simple with Tapestry once you’ve found the right components (Tacos, XTile).
The scripting aspect of Rails, of course, helps the agile development approach. There isn’t any deployment issue, the modifications are immediately accessible. With Tapestry (as we most of the Java web application framework), there is always a deployment phase (by the way, the dynamic class reloading foreseen in Tapestry 5 should facilitate such a development approach).
In conclusion, I’m really willing to learn from Rails and implement around Tapestry a set of equivalent features. By implementing such feature in Tapestry, we could still improve its productivity.