dry-view icon indicating copy to clipboard operation
dry-view copied to clipboard

Reloadable templates

Open janko opened this issue 4 years ago • 4 comments

dry-view currently seems to cache templates, as I don't see the changes being picked up before I restart the server. This is different to how e.g. Roda's rendering works, where templates are not cached but read from the filesystem each time, enabling changes to be picked up.

In development I would like templates to be reloadable, and it seems that none of the code reloaders suggested in the Roda README would help. I don't like the user experience of rerun and shotgun (suggested in https://github.com/dry-rb/dry-view/issues/134), I would like to use one of the in-app reloaders that don't restart the whole web server.

Examples

Something like

class MyView < Dry::View
  config.cache = false
end

I would even have it enabled by default, so that correct behaviour is guaranteed in development, and recommend caching for production, but that's just me 😃

Resources

https://github.com/jeremyevans/roda#code-reloading

janko avatar Feb 21 '20 21:02 janko

I'm open to this idea, @janko. Iif you grep the codebase for extend Dry::Core::Cache, you'll see we cache actually quite a few different things.

I think we'd probably want to take a unified approach to solving this, e.g. enabling/disabling all caching rather than just templates. Does that seem fair to you?

timriley avatar Mar 11 '20 11:03 timriley

dry-view, zeitwerk, listen + monkeypatch in https://github.com/dry-rb/dry-view/issues/134 works pretty well for me (without reloading all app), however I'd be happy If I could remove monkeypatch

graudeejs avatar Mar 25 '20 20:03 graudeejs

Thanks for reminding us of that approach @graudeejs!

timriley avatar Apr 09 '20 06:04 timriley

I stumpled uppoon this issue as well when using dry-view with Roda. The solution in issue #134 worked fine, but I think the documentation should mention that the templates are cached.

choallin avatar Apr 04 '22 07:04 choallin