65

Utilicé script/server -e production para iniciar los rieles en el modo de producción. Lo hizo y no tengo errores. Sin embargo, ¿cómo puedo saber si está en modo de producción? Intenté una ruta inexistente, y obtuve una página de error similar que hice en desarrollo.¿Cómo saber si los rieles están en producción?

Pensé que si en el modelo de producción, obtengo la página de error 404 que está en mi/carpeta pública.

¿Significa que no se inició en modo de producción?

Gracias por su ayuda.

Respuesta

31

2 maneras fáciles:

tail -f log/production.log 

si hay entradas que pueblan ese registro después de golpear la aplicación, que está en el modo de producción.

segunda manera:

en uno de sus puntos de vista (probablemente el diseño es bueno), sólo tiene que añadir

<%= "Environment: #{RAILS_ENV}" %> 

Y que le mostrará lo que el ambiente que se está ejecutando en

.

edición

Usted verá la página de excepción por defecto en lugar de las páginas de error reales en cualquier environme nt si la solicitud se considera "local" (es decir, de localhost o 127.0.0.1), puede anular esto añadiendo esto a su ApplicationController

def local_request? 
    false 
end 

puede encontrar este método en la documentación en el api

+0

No puedo obtener la segunda forma de trabajar, pero hay entradas en mi producción.log que dicen que creé una Tarea en X veces. Entonces, ¿por qué no obtengo la página de error 404 correcta? ¿Tengo que especificar algún lugar para proporcionar la página de error correcta? Gracias por la ayuda. –

+0

editado para agregar por qué no está obteniendo su página de error. –

+0

Obtuve un error en mi opinión y tuve que usar el enfoque de @ Krishnaprasad en su lugar. – Besi

191

Si sus Rails 3.1 Rails.env.production? le dará la verdadera

>>> Rails.env.production? 
true 
>>> 
+0

Funciona esto (Rails.env.production?) En Rails 3.0? – Tronathan

+0

Funciona para mí en Rails 3.1.3. –

+1

también en raíles 2.3: D – significance

-1

línea de comandos alternativa

$ echo $ RAILS_ENV

+0

Esto no funcionará si el servidor se inició con una var. ENV en línea. Dicho esto, si esto se hiciera, un script/alias/etc debería residir en algún lugar del disco, que incluirá la var. RAILS_ENV. Se puede buscar en el disco, como con 'ack' –

+0

, esto no funciona ... ¿qué hay en la variable y cómo se está obteniendo el entorno? – zee

15

Para las versiones modernas Rieles> = 3, Rails.env devuelve al medio ambiente como una cadena. Y luego proporciona accesos como Rails.env.the_env_name? para probar si es cierto.

3

me pareció mucho más fácil simplemente reiniciar el servidor de rieles y se lee la segunda línea en la línea de comandos:

Correr rails s -e production salidas:

=> Booting Puma 
=> Rails 4.2.4 application starting in `production` on http://localhost:3000 

había WEBrick en el ejemplo, pero algunas personas dejase' Entiendo cómo cambiar los servidores simplemente sustituiría el nombre. Actualizado para mayor claridad

+8

Nadie en su sano juicio está utilizando 'WEBrick' en producción. – Hauleth

+0

Hauleth es absolutamente correcto. Esto es simplemente para probar el entorno en el que se encuentra mientras se desarrolla. – bkunzi01

+0

¡Si esta respuesta es trolling es dominio! ¡Felicitaciones! –

8

En su línea de comando escriba rails console, luego Rails.env.

Cuestiones relacionadas