Pregunta

Los activos de precompilación en el servidor de producción son muy lentos. Así que he decidido recompilarlos en la máquina de desarrollo y subir activos al Amazon S3 por jammit. Todo está hecho pero tengo algunos problemas negativos:

  1. Tengo que incluir public/assets directorio a git control. Porque si public/assets El directorio está vacío en el servidor de producción falla
  2. Si precompino los activos en la máquina de desarrollo application.js Incluye en el HTML como comprimido y de esa manera he duplicado el código JS. Cambiar JS no tiene ningún efecto porque precompilado application.js interrumpe este código.

De esa manera, mi proceso de desarrollo incluye los siguientes pasos:

  1. Eliminar activos precompilados si voy a cambiar JS o CSS
  2. Hacer algunos cambios
  3. Activos de precompilación
  4. Cargar activos a S3 por jammit-s3
  5. Comprometer y presionar mis cambios, incluidos los activos al servidor GIT
  6. Desplegar por Capistrano

Mis preguntas son:

  1. ¿Es posible configurar el entorno de desarrollo no incluir comprimido? application.js Si lo tengo en public/assets ¿directorio?
  2. ¿Es posible configurar el entorno de producción para trabajar con vacío? public/assets ¿directorio? Los activos solo estarán en el servidor S3.
¿Fue útil?

Solución 2

Resolví este problema al incluir los activos Dir en Gitignore y excluir solo un archivo - public/assets/manifest.yml y el servidor de producción funciona correctamente ahora, es decir config.action_controller.asset_host = "http://assets.example.com" obras. Solo requiere manifest.yml expediente

Otros consejos

Para la pregunta uno, no conozco una solución permanente que no sea ejecutar:

bundle exec rake assets:clean

Antes de volver al modo de desarrollo. Me interesaría ver si puede ignorar los activos en el desarrollo sin apagar toda la tubería de activos.

En producción.rb hay una opción para su segunda pregunta:

# Enable serving of images, stylesheets, and JavaScripts from an asset server
config.action_controller.asset_host = "http://assets.example.com"

Luego debe ignorar su directorio de activos ya que se basa en el host remoto. Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top