Oracle et Passenger (mod_rails)

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

Leave a Reply