2010/06/01

Vous reprendrez bien un peu de lourd ?

DISCLAIMER : Ceci est un post à haute teneur en troll.

Redmine est de loin le meilleur outil web multiprojet pour le développement que j'ai pu utiliser en opensource. De plus il a l'avantage de bien s'interfacer avec mercurial, git et autres (D)VCS, parfait non ? Oui mais voila redmine pose plusieurs soucis :

Si en plus on rajoute les contraintes suivantes :

Et bien déployer du ruby deviens tout de suite peu évident. Je précise que j'ai une faible connaissance du ruby et de son écosystème, ce qui n'aide pas. Or j'ai bien l'impression que c'est un sujet qu'il faut suivre de près si l'on si l'on veut pouvoir réellement l'utiliser efficacement en production.

Je ne vais tout de même pas m'arrêter là, cet outil répond au besoin, il faut donc trouver un moyen de l'installer et répondant aux contraintes.

C'est là que je tombe sur jruby, je me renseigne dessus et apprend que des applis rails de type redmine peuvent tourner sur des serveurs d'application java de type tomcat ou jetty par exemple et que les performances seraient plutôt bonnes. C'est peut être une bonne piste pour les performances, mais il reste la problématique de la reproductibilité de l'installation sur des machines sans accès à Internet.

Un peu de recherche et je tombe sur warbler ce petit outil me permettrai de pouvoir fabriquer un war (donc un package déployable sur un serveur d'application java) embarquant tout le nécessaire du monde ruby, plutot pas mal.

Je me lance donc, je prend une machine ChiantOS (oui la pire des contraintes c'est que ça doit tourner sur du chiantos :(), j'installe l'openjdk et j'installe jruby.

j'ai plus qu'à installer tout le nécessaire pour redmine :

$gem install rails -v=2.3.5
$gem install jruby-openssl warbler activerecord-jdbcpostgresql-adapter

Je fais une installation classique de redmine (je choisi la 0.9.4 là dernière au moment de ce post) je configue tout normalement, j'applique le patch pour le support de jruby 1.5.0

Attention dans le fichier config/database.yml il faut bien faire attention de précéder le nom du driver par jdbc :

adapter: postgresql devient adapter: jdbcpostgresql

Dans le répertoire redmine, taper :

$warble config

il faut maintenant éditer le fichier config/warble.rb générer :

il suffit maintenant de générer le fichier war :

$warble

il doit avoir créé un fichier redmine.war qui embarque tout le nécessaire, il ne reste plus qu'à le déployer dans votre serveur d'application java de choix.

Dans mon cas j'ai choisi jetty.

Le résultat est surprenant, sur la même machine, redmine semble être boosté aux amphétamines et la consommation mémoire toujours élevée est quand même très largement réduite, par rapport au ruby classique.

Name :
URL (optional) :
Write here: "ETOOMUCHSPAM"
Comments :