mio controller è dotato di questo:rotaie 3 caching: scade azione per percorso di nome
caches_action :render_ticker_for_channel, :expires_in => 30.seconds
Nei miei percorsi di file ho questo:
match '/render_c_t/:channel_id' => 'render#render_ticker_for_channel', :as => :render_channel_ticker
Nel file di registro vedo questo:
Write fragment views/mcr3.dev/render_c_t/63 (11.6ms)
Come faccio a scadere manualmente? Ho bisogno di espirarlo da un controller diverso dal controller di rendering, ma anche all'interno del controller di rendering non riesco a farlo scadere la cosa giusta.
Se lo faccio:
expire_action(:controller => 'render', :action => 'render_ticker_for_channel', :id => c.id)
vedo:
Expire fragment views/mcr3.dev/render/render_ticker_for_channel/63 (3.2ms)
Se lo faccio:
expire_action(:controller => 'render', :action => 'render_c_t', :id => c.id)
vedo:
Expire fragment views/mcr3.dev/render/render_c_t/63 (3.2ms)
Questo:
expire_action("render_c_t/#{c.id}")
produce:
Expire fragment views/render_c_t/63 (3.5ms)
Come posso ottenere che scada lo stesso percorso che 'caches_action' sta producendo ?!
Non sono abbastanza sicuro di aggiungere questo come una risposta a pieno titolo, ma hai provato la porta sul retro? 'Rails.application.routes.url_helpers' ti darà accesso ai tuoi helper e restituirà una stringa che è il percorso e/o l'url che verrebbero inviati al browser in un'intestazione Location. Prova 'Rails.application.routes.url_helpers.render_ticker_for_channel_path (63)' e 'Rails.application.routes.url_helpers.render_ticker_for_channel (63,: host => 'mcr3.dev ') 'Potresti essere in grado di passare la stringa risultante (con qualche manipolazione) a' expire_action' e fargli trovare il giusto pezzo in cache. Brutta, ma potrebbe funzionare –