Tuesday May 08, 2007

Ruby on Rails Portlet on OpenPortal Portlet Container Project

    The long standing debate of Ruby on Rails vs. JavaEE applications will continue to stand for some time. But I believe in the notion of "If you can't fight them, join them". So Ruby guys, here is some good news for you. The OpenPortal Portlet Container Project  will soon support Ruby on Rails applications so that they can be treated on par with the JSR-168 portlets. So whether you are writing a Java portlet or a Ruby on Rails application, you can aggregate them using the OpenPortal Portlet Container.

    The ROR application is treated as a first class citizen by the OpenPortal. A new container implementation is provided so that the ROR application can be invoked by the OpenPortal. A ROR application can now be bundled in a Web Application Archive (war) due to the efforts of the Rails Integration project. To enable ease of use and minimal knowledge of Java/JavaEE a plugin on Netbeans 6 is developed. Netbeans 6 supports Ruby on Rails application development. The new plugin leverages the same so that with a few clicks a war which the OpenPortal Portlet Container can recognize.

    The screen cast for the development of the Ruby on Rails portlet can be found here. The screen cast shows how one can deploy and aggregate the now famous simple ROR blog application into the OpenPortal Portlet Container.

    If you are at JavaOne make sure that you check out the Sun's Portal booth where there are live demos of the same on display. So pretty soon you will be able to write your ROR application knowing that there is a Java Portal capable of aggregating your application with other java portlets, and sleep peacefully. :)

PS: If you are going to the JavaOne booth then say hi to Sandeep Soni who has contributed in a major way to get the ROR application in the OpenPortal Portlet Container project.

Sunday Mar 25, 2007

Ruby on Rails Portlet

    It has been an exciting week, with the prospect of integrating and running a Ruby on Rails application as a Portlet. As any Ruby fan would know, it is very easy to generate a web application on Rails with a few commands. So the next logical step was to see if we can somehow get a Portlet out of this web application. JRuby is a wonderfully powerful java implementation of Ruby and the Rails-integration project, which is a JRuby extras project helps in the integration of a Rails application with a Servlet container. 

    There is a plugin provided by the Rails integration project, which creates a war out of a Rails application. This war can be deployed on say Glassfish as a web application and can be used as any normal Java EE web application. For more details of how to do this, check out Ashish's blog entry

    So it appeared that there was an existing way to get a Java EE web application. So we used the Portal pack Netbeans plugin to create a Portlet application. We then made sure that the appropriate doXXXX() methods did a Request Dispatch to the rails application by providing the url of the controller and action needed to perform. For instance, using the famous Cookbook Ruby on Rails application, the doView() would be appropriately taking the user to the list of Recipes and so on. As of now this seems to work fine. This is still work in progress, but the presence of JRuby and Rails-integration projects has made the creation of a Portlet a lot easier. Right now this has been working on the Open Source Portlet Container on java.net.

    Next steps would be :


  1. Provide Portlet urls instead of direct rails urls so that every request appropriately goes through the Portlet Container.
  2. Check the statefulness, i.e., session management.
  3. Provide a flash demo of the entire process of converting a Ruby on Rails application into a Portlet application, and make it run on the Open Source Portlet Container.
Check this space for more on this, in the coming days.





« February 2016