Mi controlador tiene esto:carriles 3 de almacenamiento en caché: caducará la acción de ruta denominada
caches_action :render_ticker_for_channel, :expires_in => 30.seconds
En mis rutas presentar tengo esto:
match '/render_c_t/:channel_id' => 'render#render_ticker_for_channel', :as => :render_channel_ticker
En el archivo de registro que veo esto:
Write fragment views/mcr3.dev/render_c_t/63 (11.6ms)
¿Cómo expirar esto manualmente? Necesito expirar esto desde un controlador diferente que el controlador de renderizado, pero incluso dentro del controlador de renderizado no puedo lograr que caduque lo correcto.
Si hago:
expire_action(:controller => 'render', :action => 'render_ticker_for_channel', :id => c.id)
veo:
Expire fragment views/mcr3.dev/render/render_ticker_for_channel/63 (3.2ms)
Si hago:
expire_action(:controller => 'render', :action => 'render_c_t', :id => c.id)
veo:
Expire fragment views/mcr3.dev/render/render_c_t/63 (3.2ms)
Este:
expire_action("render_c_t/#{c.id}")
produce:
Expire fragment views/render_c_t/63 (3.5ms)
¿Cómo puedo conseguir que expire el mismo camino que 'caches_action' está produciendo ?!
No tengo la suficiente confianza para agregar esto como una respuesta completa, pero ¿ha probado la puerta de atrás? 'Rails.application.routes.url_helpers' le dará acceso a sus ayudantes y devolverá una cadena que es la ruta y/o url que se enviaría al navegador en un encabezado de ubicación. Pruebe 'Rails.application.routes.url_helpers.render_ticker_for_channel_path (63)' y 'Rails.application.routes.url_helpers.render_ticker_for_channel (63,: host => 'mcr3.dev ') 'Es posible que pueda pasar la cadena resultante (con alguna manipulación) a' expire_action' y hacer que encuentre el fragmento caché correcto. Feo, pero podría funcionar –