Sirviendo solo activos de imagen de CloudFront con Rails

2

Recientemente cambié a usar CloudFront como CDN para servir mis activos usando el simple

config.action_controller.asset_host = "url of your cloudfront distribution" en mi archivo de configuración.

Todo funciona bien, CF extrae activos que no tiene bien, los sirve bien, es más rápido que usar la canalización de activos.

Sin embargo, por una variedad de razones, algunos de nuestros JS se rompen cuando se sirven desde CF y no desde nuestro propio servidor. Por lo tanto, estoy buscando una forma de usar CF solo para activos de imagen (o imagen / css), y aún servir el archivo application.js compilado directamente desde nuestro propio servidor.

¿Algunas ideas?

6

Rails te permite configurarlo config.action_controller.asset_hostpara que sea un proc. De esa manera, puede tener todo el control que desee sobre la selección del host de activos. Por ejemplo:

config.action_controller.asset_host =  Proc.new { |source|
  if source.ends_with?('.jpg')
    "http://cdn.example.com"
  else
    nil
  end
}

Consulte los documentos de la API para obtener más detalles.