Oracle et Passenger (mod_rails)

Posted in linux on June 12th, 2009 by Migoo

Voilà plusieurs que je me bat contre Oracle (10g) et Passenger(2.2.2). L’application marchait bien sous Mongrel, mais avec Passenger pas moyen d’établir la connexion a la base de donnée Oracle.

La cause ? Apache ne charge pas les variables d’environnements nécessaire à Oracle.

Une solution: J’ai opté pour l’utilisation d’un wrapper Ruby qui va exporter ces variable.

Oracle fonctionne bien et les 2 gems suivantes doivent être installé correctement :

  • activerecord-oracle_enhanced-adapter (1.2.0)
  • ruby-oci8 (1.0.5)
Dans le fichier de config database.yml, utiliser l’adapter oracle_enhanced
Ensuite créer un wrapper Ruby (par exemple ruby_with_env)qui va exporter les variable d’environnement nécessaire à Oracle. Placer le dans le même dossier que l’exécutable ruby (which ruby pour trouver ce dossier):
#!/bin/bash
export ORACLE_HOME=”/usr/lib/oracle/xe/app/oracle/product/10.2.0/server”
export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:ORACLE_HOME/lib”
export SQLPATH=$LD_LIBRARY_PATH
export TNS_ADMIN=”/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/”
export NLS_LANG=”AMERICAN_AMERICA.UTF8″
/usr/local/bin/ruby $*

Dans le fichier de config de Apache (/etc/httpd/conf/httpd.conf sur centos) remplacer:
 PassengerRuby/usr/local/bin/ruby 
par PassengerRuby /usr/local/bin/ruby_with_env