The first website that I built for Inacom using ruby on rails in 2006 was deployed to Ubuntu 6.06 LTS server and I hand rolled my own install for everything (it was painful). We had MySQL on the same 256 MB VM as the rails code was running from, and we setup a proxy with Apache and Mongrel. Deploying from Capistrano 1.4 made things a bit easier once everything was setup, but the initial build was not an easy task. It was also my first time doing what some would consider fairly heavy Linux command line system administration, so that didn’t speed up the process either.
Fast forward 2 years and now I’m deploying servers in a mater of minutes, not days thanks to the deprec gem (using mongrel and nginx) and VMWare Virtual Center which allows us to store templates of our production rails servers. But VMWare VC isn’t the only Enterprise product that we’ve integrated with our rails development, we can deploy to Windows with IIS (though it still isn’t highly recommended because of performance concerns), OS X Server, and our de-facto favorite Linux Ubuntu.
Not only can we deploy the rails code on a solid hosted virtual private server (VPS), but we can also tie into a lot of the existing corporate Microsoft stack. This very blog has a SQL Server back end and authenticates against Inacom’s Active Directory with SSL over the LDAP protocol.
The bottom line is that Rails is ready for the enterprise, and it’s only getting better. Rails 2.2 will be thread safe, a feature that has been cause for some concern over the years, and it should allow for much better raw performance.
To check out some of the “rails applications that scale” see Rails in Action: The 56 Best RoR Driven Sites.
In the next few articles we’ll be detailing how we setup our production Linux server for this blog on Ubuntu 8.04 LTS and got it communicating with SQL Server via FreeTDS and the new awesome ActiveRecord ODBC adaptor written by Tim Haynes. But next, check out how we set up Active Directory authentication for this blog with a small mod to the the restful_authentication plugin.