3

Celui-ci est une bouchée! Fondamentalement, j'essaie d'envoyer tous mes actifs Rails 3 au Cloud S3 et d'utiliser CloudFront comme CDN pour tout livrer. J'ai déjà appris à configurer Rails pour tirer d'un serveur d'actifs en mode production. Le problème que je rencontre est de trouver un bon moyen d'emballer et d'envoyer automatiquement tout dans le nuage à partir d'une commande râteau ou d'une gemme de rails. L'autre problème que j'ai, c'est que je ne sais pas si l'utilisation de Less CSS avec le More gem va tout bousiller. More génère un fichier CSS à partir d'un autre répertoire et le place dans public/stylesheets. Toutes les idées ou suggestions sont très appréciées! Merci :)Utilisation de S3/CloudFront avec Rails 3 Atouts et moins CSS

+0

Comment déployez-vous votre code en production? –

+0

@Jesse Je fais un git pousser maître heroku. Mon plan était d'exécuter une tâche rake pour télécharger toutes les ressources publiques statiques vers le cloud, puis de modifier mon serveur d'actifs à mon URL cloudfront. –

Répondre

3

Si vous poussez vers Heroku et que vous utilisez les ressources Rails 3.1, vous êtes tous définis.

Dans la configuration CloudFront sur Amazon, créez votre distribution et définissez l'origine de l'URL de votre application.

ensuite dans votre fichier production.rb ajouter:

config.action_controller.asset_host = "xxxxxxxxx.cloudfront.net" 

L'hôte est l'hôte de votre distribution CloudFront.

Ensuite, lorsque vous déployez, assurez-vous que vous êtes sur la pile Cedar et que les ressources sont en cours de compilation. Cela va ajouter un MD5 unique dans les noms de fichiers. Quand une demande est faite à votre CDN (géré automatiquement par le réglage dans votre fichier production.rb), alors le CDN servira soit sa version du fichier ou le tirer de l'origine en premier. Cela signifie que vous n'avez pas à pousser les fichiers vers le CDN, ils sont automatiquement entrés.

Si vous avez un fichier qui n'a pas de nom unique pour une raison quelconque, alors vous aurez besoin de voir comment invalider le cache dans CloudFront, mais à part ça, c'est plutôt facile.

+0

Doux! Je n'avais aucune idée que CloudFront ferait cela. J'étais sous l'impression que je devais compiler les actifs et les télécharger dans le cadre de mon processus de CI. Merci! –

+0

Cela ne fonctionne qu'avec Rails 3.1 ou supérieur. Si vous utilisez une version inférieure, vous devrez peut-être entrer et invalider les données dans le cache sur CloudFront (je ne sais pas comment faire cela, mais je pense que vous le pouvez). Avec les ressources Rails 3.1, il inclut une somme de contrôle MD5 dans le nom de fichier lui-même rendant chaque construction unique. –