2010-08-12 25 views
10

Tengo un servidor de producción y un servidor intermedio en el que se prueban nuevas características antes de moverlas a producción. El servidor de transición es físicamente diferente del de producción (diferentes hosts con diferentes URL), pero lo imita tanto como sea posible (es decir, los mismos paquetes, las mismas gemas, etc.).Rieles: clasificación diferenciadora de la producción

Rails.env = 'production' en ambos servidores.

Mi problema es que, en algunos casos, necesito un comportamiento diferente en la puesta en escena que en la producción.

Por ejemplo, una nueva característica podría enviar correos masivos a los usuarios en producción; pero mientras lo estoy probando, prefiero que se envíen a una cuenta de correo electrónico de "prueba".

¿Cuál es la mejor forma de detectar el servidor en el que estoy?

Me gustaría hacerlo tan "raily" como sea posible.

Muchas gracias.

Respuesta

23

Generalmente, esta es la razón por la que usaría diferentes entornos. En términos prácticos, un entorno de ensayo suele ser muy cercano a la producción, pero con cosas como correos electrónicos reales desactivados.

No está limitado a desarrollo/prueba/producción: puede ejecutarlo en un entorno con el nombre que desee. Simplemente cree un archivo config/environments/staging.rb, establezca los valores que desea allí y comience su aplicación con RAILS_ENV = staging: eso es todo. De esta forma puede emular su entorno de producción, pero active o desactive las funciones según lo desee cuando no las quiera activar antes de que realmente se active.

+0

Gracias. Terminé cambiando el entorno (relativamente fácil, en realidad) y ahora todo funciona según lo previsto. – kikito

-1

Me temo que esta respuesta no es terriblemente útil.

La forma railsy es que los entornos difieren solo en la configuración (host de activos, base de datos, etc.) para diferentes entornos. De modo que una base de datos diferente con usuarios que tengan direcciones de correo ficticias o de prueba sería la forma más fácil de hacerlo.

Si está generalmente clona desde Producción, recomiendo la actualización de mensajes de correo electrónico de todos los usuarios, ya sea a través script/dbconsole o script/console o simplemente una llanura simple tarea rake.

Y si quiere limitar/controlar las funciones, le recomendaría hacerlo a través del control de código fuente, es decir, mediante el despliegue de diferentes revisiones.

Cuestiones relacionadas