Whenever I search subjects relating to rapid application development, I always encounter Ruby On Rail (ROR). So I decided to take a look of ROR. The creators and supporters of ROR have done an excellent job to make starting with ROR really easy. Instant Rails has made download and installation a one stop shopping.The Rolling with Ruby on Rails is one of the best articles that I have ever read on introducing a new subject.
What makes ROR so productive? I think the following features really make ROR productive:
- Scafolding: ROR's code generator can generate the skeleton code from a database table. One can then work on generated code to meet the needs.
- Migration: A typical problem with database application development is what to do when the table schema is changed. ROR has excellent data migration tool built-in.
- Convention over configuration: ROR uses MVC pattern.Unlike other MVC frameworks such as Struts or String, ROR uses convention to instantiat objects and assemble them together. We neither to work with configuration files, nor have to assemble the objects.
- ActiveRecord: ROR's model often is simply a subclass of ActiveRecord without additional properties. It is not necessary to regenerate the model when the table schema is changed.
- Ajax support: ROR really shines at utility functions that can generate Javascript code to create an AJAX application.
- Easy to create unit tests to test the model and controller.
So am I going to develop my next big application wth ROR? I am still sketical for the following reasons:
- Scalability concern: I don't think I can do everything in Ruby. I think is much easier to find libraries in Java or .NET. So if I want to create an application with a single language, Java or .Net is a much better bet.
- Errors are captured at runtime instead of compile time.
- Debugging support.
- Model has access to database. I really hope model and persistency are implemented in different layers.
ASP.NET is current still my favorite web application development tool because it is the best tool for build sophiscated view for its support for rich controls. Microsoft has created excellent RAD tools such as strongly-typed dataset and it is nearly as productive as ROR. The main draw back with RAD deeloped with ASP.NET/Strongly-typed dataset is that the view and controller are combined in the code-behind so the controller is not testable. So we really need a scafolding tool to make it easier to generate the MVC skeleton. I am glad to see that projects like SubSonic is emerging.