2008-09-17 23 views
7

Configuré Passenger en desarrollo (Mac OS X) y funciona sin problemas. El único problema vino después: ahora tengo una ruta personalizada GEM_HOME y binarios ImageMagick instalados en "/usr/local". Puedo ponerlos en uno de los archivos de shell rc que se obtienen y esto resuelve las variables de entorno para procesos generados desde la consola; pero ¿y pasajero? La misma aplicación no puede encontrar mis gemas cuando se ejecuta de esta manera.Configuración de variables de entorno para aplicaciones de Phusion Passenger

+3

Actualización: desde Passenger 2.2.3, la "directiva SetEnv es compatible: http: //blog.phusion.nl/2009/06/17/phusion-passenger-223-released-bug-fix-edition/ correctamente. Técnica de la respuesta de Ben me sirve muy bien pero ahora no hay necesidad de usarlo nunca más (en la mayoría de los casos) – mislav

Respuesta

12

Conozco dos soluciones. El primero (documentado here) es esencialmente el mismo que manveru's-set la variable ENV directamente en su código.

El segundo es crear un envoltorio alrededor del intérprete de Ruby que usa el Pasajero, y está documentado here (busque passenger_with_ruby). Lo esencial es que se crea (y el punto PassengerRuby en su configuración de Apache a)/usr/bin/ruby_with_env, un archivo ejecutable que consiste en:

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

Tanto el trabajo; el primer enfoque es un poco menos hackish, creo.

+0

Sólo en caso de que alguien se encuentra con el mismo problema que tenía:. no se olvide de 'chmod + x/usr ./bin/ruby_with_env' –

+0

Dado que esta es una respuesta de edad, sólo quiero confirmar esta respuesta todavía parece ser la forma recomendada de manejar este problema Más referencias:. http://blog.phusion.nl/2008/12/ 16/pasajeras-ambiente-variables-a-ruby-from-phusion pasajeros/y: http://dev.mensfeld.pl/2011/09/phusion-passenger-and-environment-variables-with-ruby-rake- aplicaciones/ – Felixyz

+0

Más recientemente parece que esto tiene c colgado. Desde Phusion 4.0, puede utilizar las directivas de Apache 'PassEnv' y 'SetEnv': http://www.modrails.com/documentation/Users%20guide%20Apache.html#env_vars_passenger_apps – nielsbot

1

Me he encontrado con este problema también. Es appears que el Pasajero no pasa a través de los valores establecidos mediante la directiva apache SetEnv, lo cual es desafortunado.

Tal vez sea posible establecer las variables de entorno en su environment.rb o boot.rb (suponiendo que estamos hablando de una aplicación Rails; no estoy familiarizado con el estante pero se supone que tiene una funcionalidad similar)

2

antes de hacer cualquiera requiere (especialmente antes de requerir rubygems) que puede hacer:

ENV['GEM_HOME'] = '/foo' 

esto va a cambiar la variable de entorno dentro de este proceso.

2

Descubrí que si tiene privilegios de root en la computadora, puede establecer las variables de entorno necesarias en el archivo "envvars" y apachectl ejecutará este archivo antes de iniciar Apache.

envvars normalmente se encuentra en el mismo directorio donde se encuentra apachectl - en Mac OS X que se encuentra en/usr/sbin. Si no puede encontrarlo, busque en el código fuente de la secuencia de comandos apachectl.

Después de cambiar el archivo envvars, reinicie Apache con "apachectl -k restart".

Cuestiones relacionadas