steps run rails guide first example create app ruby-on-rails development-environment production-environment

ruby on rails - run - Cambiar una aplicación Rails a producción



ruby rails guide (15)

Asegúrese de haber hecho lo siguiente en su archivo environment.rb.

ENV [''RAILS_ENV''] || = ''producción''

Si su aplicación se ejecuta en un entorno de alojamiento compartido o en un pasajero de phushion, es posible que necesite realizar cambios en .httaccess (dentro de la carpeta pública) y establecer el modo como producción.

¿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?


Cómo configurar y ejecutar una aplicación de Rails 4 en modo de Producción (paso a paso) usando Apache y Phusion Passenger:

Normalmente, usted podría ingresar su proyecto de Rails, rails s , y 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.

  1. Consulte esta guía para la configuración básica del servidor (CentOS 6, pero debería 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

  2. Asegúrese por completo de que después de configurar Passenger, haya editado el archivo /etc/httpd/conf/httpd.conf para reflejar su estructura de directorios. Desea apuntar DocumentRoot a su proyecto Rails / carpeta pública Anywhere en el archivo httpd.conf que tiene este tipo de directorio: /var/www/html/your_application/public necesita ser actualizado o todo será muy frustrante. No puedo enfatizar esto lo suficiente.

  3. Reinicie el servidor (o Apache al menos - service httpd restart )

  4. Ingrese a la carpeta del proyecto Rails /var/www/html/your_application y comience la migración con rake db:migrate . Asegúrese de que exista una tabla de base de datos, incluso si planea agregar tablas más adelante (esto también es parte del paso 1).

  5. RAILS_ENV=production rake secret : esto creará una clave secreta que puede agregar a config/secrets.yml . Puedes copiarlo / pegarlo en config / secrets.yml para que todo funcione, aunque te recomiendo que no lo hagas. Personalmente, hago este paso para asegurarme de que todo lo demás funciona, luego lo cambio y lo fuente más adelante.

  6. RAILS_ENV=production rake db:migrate

  7. RAILS_ENV=production rake assets:precompile si está sirviendo activos estáticos. Esto enviará js, css, archivos de imagen a la carpeta /public .

  8. RAILS_ENV=production rails s

En este punto, su aplicación debería estar disponible en http://something.com/whatever lugar de :3000 . Si no, passenger-memory-stats y mira si hay una entrada como 908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname

Probablemente me he perdido algo atroz, pero esto funcionó en el pasado.


Cambie la variable de entorno RAILS_ENV a production .


Como otros han publicado: rails server -e production

O, mi favorito personal: RAILS_ENV=production rails s RAILS_ENV=production


En Rails 3

Agregar Rails.env = ActiveSupport::StringInquirer.new(''production'') en la aplicación.rb y rails s funcionarán igual que rails server -e production

module BlacklistAdmin class Application < Rails::Application config.encoding = "utf-8" Rails.env = ActiveSupport::StringInquirer.new(''production'') config.filter_parameters += [:password] end end


Esto ahora sería

rails server -e production

O, más compacto

rails s -e production

Funciona para proyectos de rieles 3+.


No es una buena forma de ejecutar el servidor de rieles en el entorno de producción mediante "rails server -e production", ya que Rails se ejecuta como una aplicación de subproceso único y solo puede responder a una solicitud HTTP a la vez.

El mejor artículo sobre el entorno de producción para raíles es Production Environments - Rails 3


Por defecto, el servidor se ejecuta en el entorno de desarrollo: $ rails s

Si se está ejecutando en el entorno de producción: $ rails s -e production o $ RAILS_ENV=production rails s


Si la sugerencia de mipadi no funciona, agréguela a config / environment.rb

# force Rails into production mode when # you don''t control web/app server and can''t set it the proper way ENV[''RAILS_ENV''] ||= ''production''


Si está ejecutando Passenger , el valor predeterminado es ejecutar en producción, en su configuración de apache:

<VirtualHost *:80> ServerName application_name.rails.local DocumentRoot "/Users/rails/application_name/public" RailsEnv production ## This is the default </VirtualHost>

Si solo está ejecutando un servidor local con mongrel o webrick, puede hacer:

./script/server -e production

o en bash:

RAILS_ENV=production ./script/server

en realidad anulando la constante RAILS_ENV en el entorno. rb probablemente sea tu último recurso, ya que probablemente no se mantendrá fijo (ver otra respuesta que di sobre eso)


También puede pasar el entorno a script / servidor:

$ script/server -e production


para el servidor predeterminado: rails s -e production

para el puerto del servidor costum: raíles s -p [puerto] -e producción, p. ej. rieles s -p 3002 -e producción


$> export RAILS_ENV=production


RAILS_ENV=production rails s

O

rails s -e production

Por defecto el entorno es desarrollo.


rails s -e production

Esto ejecutará el servidor con RAILS_ENV = ''production'' .

Aparte de esto, debes establecer la ruta de los activos en production.rb

config.serve_static_assets = true

Sin esto, sus activos no se cargarán.