¿Cómo puedo cambiar mi aplicación Rails para que se ejecute en modo de producción? ¿Hay un archivo de configuración, environment.rb, por ejemplo, para hacer eso?
ruby-on-rails
development-environment
production-environment
Adler Medrado
fuente
fuente

Respuestas:
Cómo configurar y ejecutar una aplicación Rails 4 en modo Producción (paso a paso) usando Apache y Phusion Passenger:
Normalmente, podrá ingresar a su proyecto Rails
rails sy obtener una versión de desarrollo de su aplicación en http://something.com:3000 . El modo de producción es un poco más complicado de configurar.He estado jugando con esto por un tiempo, así que pensé en escribir esto para los novatos (como yo). Hay algunos pequeños ajustes que se extienden a través de Internet y pensé que esto podría ser más fácil.
Consulte esta guía para la configuración central del servidor (CentOS 6, pero debe aplicarse a casi todos los sabores de Linux): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-with-apache-and-passenger-on-centos-6
Asegúrese de que después de configurar Passenger haya editado el
/etc/httpd/conf/httpd.confarchivo para reflejar la estructura de su directorio. Desea apuntar DocumentRoot a su proyecto Rails / carpeta pública En cualquier parte delhttpd.confarchivo que tenga este tipo de directorio:/var/www/html/your_application/publicdebe actualizarse o todo se volverá muy frustrante. No puedo enfatizar esto lo suficiente.Reinicie el servidor (o Apache como mínimo
service httpd restart)Ingrese su carpeta de proyecto Rails
/var/www/html/your_applicationy comience la migración conrake db:migrate. Asegúrese de que exista una tabla de base de datos, incluso si planea agregar tablas más tarde (esto también es parte del paso 1).RAILS_ENV=production rake secret- esto creará una clave secreta a la que puede agregarconfig/secrets.yml. Usted puede copiar / pegar esto en config / secrets.yml en aras de conseguir las cosas funcionando, aunque me gustaría recomendar que no lo hace. Personalmente, hago este paso para asegurarme de que todo lo demás funciona, luego lo cambio y lo busco más tarde.RAILS_ENV=production rake db:migrateRAILS_ENV=production rake assets:precompileSi está sirviendo activos estáticos. Esto empujará js, css, archivos de imagen a la/publiccarpeta.RAILS_ENV=production rails sEn este punto, su aplicación debería estar disponible en
http://something.com/whateverlugar de:3000. Si no,passenger-memory-statsy ver si hay una entrada como908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectnameProbablemente me he perdido algo atroz, pero esto me ha funcionado en el pasado.
fuente
Esto ahora sería
O más compacto
Funciona para rieles 3+ proyectos.
fuente
rails s -e productionserver -e productionsobre ellos?productiones invariablemente el valor predeterminado.echo "export RAILS_ENV=production" >> ~/.bash_profileSi está ejecutando en Passenger , entonces el valor predeterminado es ejecutar en producción, en su configuración de apache:
Si solo está ejecutando un servidor local con mongrel o webrick, puede hacer:
o en bash:
en realidad, anular la constante RAILS_ENV en enviornment.rb probablemente debería ser su último recurso, ya que probablemente no se mantendrá establecido (vea otra respuesta que di sobre eso)
fuente
Si la sugerencia de mipadi no funciona, agregue esto a config / environment.rb
fuente
ENV['RAILS_ENV'] ||= 'production'puede aplicar sobre ellos también?Cambie la variable de entorno
RAILS_ENVaproduction.fuente
~/.bashrco~/.bash_profilesimplementeexport RAILS_ENV=production"fuente
También puede pasar el entorno al script / servidor:
fuente
Esto ejecutará el servidor con
RAILS_ENV='production'.Aparte de esto, debe establecer la ruta de los activos en
production.rbSin esto, sus activos no se cargarán.
fuente
O
Por defecto el entorno es desarrollo.
fuente
Como otros han publicado:
rails server -e productionO mi favorito personal:
RAILS_ENV=productionrails sfuente
En rieles 3
Agregar
Rails.env = ActiveSupport::StringInquirer.new('production')a la aplicación.rb yrails sfuncionará igual querails server -e productionfuente
No es una buena forma de ejecutar el servidor rails en el entorno de producción mediante "rails server -e production", ya que rails se ejecuta como una aplicación de un solo subproceso y solo puede responder a una solicitud HTTP a la vez.
El mejor artículo sobre entorno de producción para rieles es Entornos de producción - Rieles 3
fuente
para el servidor predeterminado: rails s -e production
para el puerto del servidor costum: rails s -p [port] -e producción, por ejemplo. rieles s -p 3002 -e producción
fuente
Por defecto, el servidor se ejecuta en el entorno de desarrollo:
$ rails sSi está ejecutando en un entorno de producción:
$ rails s -e productiono$ RAILS_ENV=production rails sfuente
Asegúrese de haberlo hecho a continuación en su archivo environment.rb.
Si su aplicación se ejecuta en un entorno de alojamiento compartido o pasajero, es posible que deba realizar cambios en .httaccess (dentro de la carpeta pública) y establecer el modo como producción.
fuente