Ruby on Rails : déployer une application sur Tomcat avec JRuby

September 7, 2009

rails Ruby on Rails est un framework qui permet de développer très rapidement des applications Web en suivant le modèle MVC.

Le problème de ce framework est qu’il se base sur le langage Ruby et qu’il embarque un serveur Web. Les applications ainsi créées ne peuvent pas être déployées comme des applications Web dans Tomcat ou autres serveurs d’applications.

Le but de ce tutoriel est de vous permettre de déployer les applications Ruby on Rails (RoR) sur un serveur Tomcat en utilisant la librairie JRuby.

Installation Tomcat

On commence par télécharger la dernière version de Tomcat (en ce moment c’est la version 6.0.20) :

wget http://mirror.mkhelif.fr/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
tar –xzf apache-tomcat-6.0.20.tar.gz

Voilà Tomcat est installé, je passerai ici la configuration du serveur. Si vous souhaitez, suivez mon tutoriel pour connecter Apache avec Tomcat.

Installation JRuby

Télécharger JRuby et placez le là où vous souhaitez :

wget http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz
tar –xzf jruby-bin-1.3.1.tar.gz
mv jruby-1.3.1 /usr/local/jruby

Ajouter ensuite le chemin vers JRuby dans votre environnement en éditant votre fichier ~/.profile :

export PATH=$PATH:/usr/local/jruby/bin

Vous pouvez vérifier l’installation de JRuby en exécutant la commande suivante :

$ jruby -v
jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot(TM) Client VM 1.5.0_16) [i386-java]

Installation de Ruby on Rails

À partir de là nous allons installer les gems pour : rails (le coeur de ROR), mysql et surtout warbler (qui crée un WAR à partir de l’application rails).

$ jruby -S gem install rails
$ jruby -S gem install activerecord-jdbcmysql-adapter
$ jruby -S gem install warbler

Déploiement de votre application

Pour déployer votre application dans Tomcat, il faut commencer par la convertir en WAR. Placez vous dans le dossier de votre application et lancez la commande suivante :

$ warble config

Cela va créer un fichier */config/warble.rb* pour configurer votre application pour la convertir en fichier WAR, ouvrez le fichier et dé-commentez la ligne :

config.gems += ["activerecord-jdbcmysql-adapter"]

Cela pour inclure dans votre fichiers WAR la gem MySQL (ajoutez les gems que votre application utilise ici).

Maintenant nous allons créer le fichier WAR de votre application, lancez simplement la commande :

$ warble

Et voilà votre fichier WAR est créé, vous pouvez alors le déployer sur Tomcat (je passerai sur cette étape).