dry-view
dry-view copied to clipboard
Reloadable templates
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
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?
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
Thanks for reminding us of that approach @graudeejs!
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.