2012-07-06 1 views
1

J'utilise CarrierWave pour les images et Amazon Cloudfront comme CDN (sans S3).Utiliser Carrierwave avec Cloudfront

La question est que quelque chose comme: @user.image_url renvoie l'URL non CDN, même si j'ai configuré mes actifs en conséquence:

# /config/environments/production.rb 
    config.action_controller.asset_host = Proc.new { |source, request| 
    if ['jpg','jpeg','png','gif','bmp'].include?(source.split('.').last) 
     unless request.ssl? 
     "http://cdn.domain.com" 
     else 
     "https://ge95v2x8h9t3.cloudfront.net" 
     end 
    end 
    } 

Comment faire CarrierWave utiliser mon asset_host proc comme d'autres actifs?

Répondre

1

Vous pouvez configurer l'onde porteuse pour utiliser un asset_host personnalisé (config.fog_host ... documenté dans le readme). Bien que non documenté, vous pouvez également utiliser un Proc - ou quoi que ce soit à répondre: appeler - pour déterminer la chaîne à l'exécution:

https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/storage/fog.rb#L107

Je ne suis pas sûr d'un moyen de pointer juste config.fog_host directement à Rails' config.asset_host, mais je suis sûr qu'il doit y avoir un moyen d'y faire référence - même si vous devez utiliser une interface non publique. Cependant, je ne sais pas à quel point cela serait utile pendant le développement ... vous voudrez probablement que les ressources soient servies par localhost et que les téléchargements soient fournis depuis Cloudfront.

Questions connexes