2010-07-23 13 views
5

¿Cómo puedo saber si los carriles se ejecuta en un servidor web, en lugar de un script o IRB?Determinar si los carriles se ejecuta en un servidor web

Para el contexto: Estoy seguimiento de un objeto ActiveRecord, y quiero alertas por correo electrónico si los objetos cambios, pero sólo si los cambios se produjeron a través de la interfaz web.

+0

¿Está utilizando el modo de producción a nivel local? Normalmente se diferenciaría entre producción/desarrollo/prueba para este tipo de cosas. – jdeseno

+0

Por lo general no, pero a veces vamos a utilizar la consola o secuencia de comandos para cambiar cosas en la base de datos de producción. – rogueg

Respuesta

-1

que he encontrado algo que funciona, aunque no es muy bonita

$0 # => "irb" (for script/console) 
    # => "/some/handler.fcgi" (for webserver) 
    # => "/some/script.rb" (for a script) 
0

Tal vez me estoy perdiendo algo obvio, pero no es el hecho de que si su modelo de acceso se produce a través de una interfaz de controlador (es decir, algún tipo de acción), entonces, por definición, un acceso a través de una interfaz web?

rieles no se ejecuta bajo IRB. Sí, se puede acceder a los objetos y el estado bajo el console pero eso no es un acceso al servidor web.

Creo que solo necesita configurar algunos filtros en sus controladores para implementar su lógica de seguimiento para los modelos de interés y luego puede diferenciar entre el acceso general y el acceso al servidor web (que es iniciado por el controlador).

¿Tiene sentido?

+0

Hola bjg, gracias por tu respuesta. Cuando digo irb, me refiero a consola. Los filtros son una gran idea, pero no estoy exactamente claro cómo funcionaría eso. El controlador en cuestión no es muy RESTful y actualiza varios modelos diferentes. ¿Cómo puedo detectar esto desde un filtro? – rogueg

4

tengo la tarea de mi solicitud de realizar varias comprobaciones de puesta en marcha antes de la puesta en marcha específicamente como un servidor. En mi caso particular yo quiero para asegurarse de que un registro especial User existe en la base de datos ya que las llamadas API realizadas a mi solicitud requieren este User.

que utilizar este truco en uno de los inicializadores responsables de los controles de inicio:

if defined? Rails::Server 
    puts "Running as a server..." 
    # Perform checks here... 
end 
+1

¡Esto funcionó para mí! –

Cuestiones relacionadas