Question

J'ai configuré Passenger en développement (Mac OS X) et cela fonctionne parfaitement. Le seul problème est venu plus tard: j'ai maintenant un chemin personnalisé GEM_HOME et des fichiers binaires ImageMagick installés dans "/ usr / local" / . Je peux les mettre dans l'un des fichiers rc du shell qui ont été obtenus, ce qui résout les variables d'environnement pour les processus générés à partir de la console; mais qu'en est-il passager? La même application ne peut pas trouver mes pierres précieuses lorsqu'elle est exécutée de cette manière.

Était-ce utile?

La solution

Je connais deux solutions. La première (documentée ici ) est essentiellement la même que celle de manveru & # 8212; définissez la variable ENV directement dans votre code.

La seconde consiste à créer un wrapper autour de l'interpréteur Ruby utilisé par Passenger. Il est documenté ici (recherchez passenger_with_ruby). L’essentiel est que vous créez (et pointez PassengerRuby dans votre configuration Apache) / usr / bin / ruby_with_env, un fichier exécutable composé de:

#!/bin/bash
export ENV_VAR=value
/usr/bin/ruby $*

Les deux fonctionnent; la première approche est un peu moins féroce, je pense.

Autres conseils

Avant que vous ne fassiez quelque chose (surtout avant que vous ayez besoin de rubygems), vous pouvez faire:

ENV['GEM_HOME'] = '/foo'

Ceci modifiera la variable d'environnement dans ce processus.

J'ai découvert que, si vous disposez de privilèges root sur votre ordinateur, vous pouvez définir les variables d'environnement nécessaires dans " envvars " fichier et apachectl exécutera ce fichier avant de lancer Apache.

envvars se trouve généralement dans le même répertoire que celui d’apachectl. Sous Mac OS X, il se trouve dans / usr / sbin. Si vous ne le trouvez pas, cherchez la source du script apachectl.

Après avoir modifié le fichier envvars, redémarrez Apache avec "apachectl -k restart".

J'ai aussi rencontré ce problème. Il apparaît que le passager ne transmet pas les valeurs définies à l'aide du SetEnv directive apache - ce qui est regrettable.

Peut-être qu'il serait peut-être possible de définir des variables d'environnement dans votre environment.rb ou boot.rb (en supposant que vous parlez d'une application Rails; je ne connais pas bien Rack, mais il a vraisemblablement des fonctionnalités similaires)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top