2011-11-26 24 views
10

Estoy aprendiendo Ruby on Rails. Por el momento estoy ejecutando mi sitio localmente con rails server en la Terminal OS X. ¿Qué cambia cuando se ejecuta un sitio de Rails en una caja de producción?Ejecución de un sitio de Rails: desarrollo vs producción

  • ¿El sitio todavía se inició con rails server?
  • ¿Alguna diferencia con la configuración de db?

Nota: Estoy corriendo Rails 3.

+0

Posible duplicado: http: // stackoverflow.com/questions/1949229/change-a-rails-app-to-production –

+1

@ Black, para mí esto no parece un duplicado de la pregunta que ha vinculado. – Andrew

+0

¿Necesita agregar el parámetro de producción 'rails server -e production' – abhinav

Respuesta

16

Un carriles de aplicación se puede ejecutar en la producción llamando rails server -e production, aunque el 99% de las veces se le sirve en algo como pasajero o delgada vez de WEBrick, lo que significa que hay un comando diferente para iniciar el servidor. (thin start -e production por ejemplo)

Esta es una pregunta complicada, pero el mejor lugar para comenzar a aprender sobre las diferencias sería mirar los archivos específicos environment.rb. Cuando se inician los raíles, comienza con el archivo de entorno que coincide con el entorno llamado, es decir, si lo inicia en desarrollo, comienza cargando su archivo development.rb o, si está en producción, cargará el archivo production.rb. Las diferencias en los entornos son principalmente el resultado de estas diferencias en los diversos archivos de configuración del entorno.

Básicamente si una aplicación Rails 3.1 está en modo de producción, de manera predeterminada no va a compilar activos sobre la marcha, y se llevará a cabo un gran almacenamiento en caché que no está sucediendo en el desarrollo. Además, cuando recibe mensajes de error, se registrarán pero no se mostrarán al usuario, en su lugar se usará la página de error estático de su directorio público.

Para obtener una visión más clara de esto, me permito sugerir la lectura de los carriles correspondientes guías:

carriles de guía de inicialización: http://guides.rubyonrails.org/initialization.html

Guía de configuración de rieles: http://guides.rubyonrails.org/configuring.html

2

Hay dos contextos, puede utilizar la palabra "producción" aquí. Uno de ellos está ejecutando el servidor en modo de producción. Esto se puede hacer a nivel local por,

RAILS_ENV=production ./script/server 

La configuración de este es recogido de config/ambientes/production.rb. Intente comparar este archivo con config/environments/development.rb. Solo existen diferencias sutiles como las clases de almacenamiento en caché. El modo de desarrollo lo hace más fácil para que responda a cualquier cambio que realice al instante. Además, se usarán dos bases de datos diferentes (por defecto), es decir, su desarrollo de proyecto y su producción de proyecto si elige ejecutar su servidor en cualquiera de estos modos.

Por otro lado, la implementación de raíles en una caja de producción es algo diferente. Deberá elegir su servidor con cuidado. Es posible que tenga que lidiar con un script de despliegue que puede ser capistrano. Es posible que también necesite un equilibrador de carga como netgear. La base de datos también puede requerir una consideración profunda como la expectativa de tamaño, clústeres maestro/esclavo, etc.,

Nota: Nunca he usado Rails 3. Esta respuesta está sesgada hacia 2.3.x.

Cuestiones relacionadas