rails example deploy delete cache ruby-on-rails caching deployment heroku clear

ruby-on-rails - example - delete deploy heroku



¿Cómo puedo borrar la memoria caché de los raíles después de implementarla en heroku? (7)

Apliqué el caché a mi aplicación heroku rails y funciona bien. Pero cada vez que despliegue en heroku, también quiero borrar el caché automáticamente.

así que busqué en Google y encontré esto.

task :after_deploy, :env, :branch do |t, args| puts "Deployment Complete" puts "Cleaning all cache...." FileUtils.cd Rails.root do sh %{heroku run console} sh %{Rails.cache.clear} end end

pero cuando rastreé este script, solo se muestra la línea de comando de la consola heroku, pero el comando Rails.cache.clear no se escribe. (Supongo que es porque la consola heroku es interactiva)

y

system "heroku console Rails.cache.clear"

no funciona para aplicaciones de cedro.

¿Como puedó resolver esté problema?

Gracias.


Debería poder crear una tarea de compensación de caché que se parece a esto:

namespace :cache do desc "Clears Rails cache" task :clear => :environment do Rails.cache.clear end end

e invocarlo directamente en un comando que puede usar en su anzuelo de publicación posterior, por ejemplo:

heroku run rake cache:clear


Heroku no admite en la actualidad una cartera de acciones que se produzcan después de la implementación. Necesitará algo como Codeship o TravisCI para crear una receta de pasos que ocurren durante la implementación

Divulgación: soy un cliente de Codeship.


Lo siguiente debería funcionar en cedro:

heroku run console

..luego espere 5 segundos para que la consola heroku arranque

Rails.cache.clear

Entonces debería ver el caché libre y puede salir de la consola. Recuerde que es posible que tenga que actualizar algunas veces porque su máquina local a menudo almacenará activos en la memoria caché y otros en su navegador hasta que realice una nueva solicitud.

Sin embargo, si se trata de activos que está almacenando en caché, no necesita pasar por un borrado manual cada vez que lo hace, solo necesita configurar el flujo de activos y asegurarse de que todos sus js / css (menos / sass) / Las imágenes estáticas se compilan con hashes al final de sus nombres de archivo.


Rails tiene una tarea integrada de rake:

rake tmp:clear


Ruby on Rails tiene una variable ENV mágica llamada ''RAILS_CACHE_ID''. Configuré esto en la id. De commit de git cuando implemente: heroku config:set RAILS_CACHE_ID=$CIRCLE_SHA1


Si simplemente desea ejecutar una tarea de rake después de la implementación, le recomiendo consultar:

https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

Lo hemos usado en producción durante más de 6 meses y ha sido sólido como una roca.

Primero, agregue el paquete de construcción DESPUÉS de que ya tenga el conjunto de compilación de Ruby. Esto debería suceder después de su primer despliegue en el servidor

heroku buildpacks:add https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

Segundo, configure una variable de entorno llamada DEPLOY_TASKS con solo los nombres de las tareas de rake que quiera ejecutar separadas por espacios.

heroku config:set DEPLOY_TASKS=''cache:clear