Monday Aug 20, 2007

Ruby and jRuby, Mogrel, Goldspike, Grizzly and GlassFish

Ruby Hack Day (see Arun's report) included a presentation by Nick Sieger on how to deploy Rails Application for production. The traditional (old?) arrangement (diagram) is to have the HTTP processing done via Mongrel and then use Mongrel_Cluster: one Rails per Mongrel, one Mongrel per (native) Ruby, each Ruby as an OS process. Nick showed 3 variants using jRuby instead of Ruby.


The first approach uses Mongrel_jCluster: one Rails per Mongrel, one Mongrel per jRuby, many jRuby per JVM.

In the second approach the Rails app is packaged as a WAR, the HTTP processing is done by GlassFish and then, via the Goldspike RailsServlet delivered to Rails instances.

In the third approach the requests are passed directly from the Grizzly layer to Rails.

Arun has a nice writeup capturing these options from where I stole the pictures. You may also want to check the Wiki pages on Ruby and GlassFish and on Ruby and NetBeans.