2011-04-09 23 views
6

Tengo una aplicación que se ejecuta en varios servidores: - localmente en las máquinas dev - en heroku - en un servidor específico con Pasajero en NginxRails 3: ¿cómo detectar si la aplicación se está ejecutando en modo servidor para entornos diferentes?

Estoy tratando de poner en marcha un código particular (carga de algunas teclas REDIS) eso solo es necesario si se lanza el servidor web.

he hecho un poco de excavación, y la solución que encontré fue mejor para ejecutar el código en un inicializador con:

if defined?(Rails::Server) 
    #my code 
end 

Esto funciona bien a nivel local, pero parece que los carriles :: servidor nunca se define ya sea en Heroku o Passanger.

Necesito una solución que funcione en todos los casos, ayuda, esto es muy importante.

Gracias,

Alex

PS: Estoy rieles 3.0.4 corriendo, Ruby 1.8.7

Respuesta

2

¿Qué pasa?

config.serve_static_assets = (defined?(Mongrel) || defined?(WEBrick)) ? true : false 
8

poner el código en el archivo de config.ru podría haber una forma más robusta de detectar el modo de servidor a través de diferentes tipos de servidores (unicornio/pasajero/Rails :: Server/etc).

por ejemplo, en los carriles-root/config.ru:

# This file is used by Rack-based servers to start the application. 

# ADD this line and read the value later: 
ENV['server_mode'] = '1' 

require ::File.expand_path... 
+1

el código anterior se rasguen. usted quiere que este ENV ['server_mode'] = '1' – portforwardpodcast

+1

lo haya arreglado. Gracias. –

+0

después de unos años ... parece que Rails carga los inicializadores antes del archivo 'config.ru' ahora – songyy

Cuestiones relacionadas