From 127ea74a8b2b5f05ca9fb8f51fec4a29d6849120 Mon Sep 17 00:00:00 2001 From: Brian Read Date: Thu, 5 Sep 2024 11:57:23 +0100 Subject: [PATCH] Add in WithoutCache plugin --- root/usr/share/smanager/lib/SrvMngr.pm | 3 + .../smanager/lib/SrvMngr/Plugin/Cache.pm | 73 ++++++++++++++ .../lib/SrvMngr/Plugin/WithoutCache.pm | 94 +++++++++++++++++++ smeserver-manager.spec | 5 +- 4 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 root/usr/share/smanager/lib/SrvMngr/Plugin/Cache.pm create mode 100644 root/usr/share/smanager/lib/SrvMngr/Plugin/WithoutCache.pm diff --git a/root/usr/share/smanager/lib/SrvMngr.pm b/root/usr/share/smanager/lib/SrvMngr.pm index 4c2454a..647dbf6 100644 --- a/root/usr/share/smanager/lib/SrvMngr.pm +++ b/root/usr/share/smanager/lib/SrvMngr.pm @@ -25,6 +25,7 @@ use SrvMngr::Plugin::I18N; use SrvMngr::I18N; use SrvMngr::Model::Main; +use SrvMngr::Plugin::WithoutCache; our $VERSION = '1.420'; $VERSION = eval $VERSION; @@ -210,6 +211,8 @@ sub setup_plugins { $self->plugin('TagHelpers'); $self->plugin('RenderFile'); + + $self->plugin('SrvMngr::Plugin::WithoutCache'); # CSRF protection if production mode # $self->plugin('Mojolicious::Plugin::CSRFDefender' => { diff --git a/root/usr/share/smanager/lib/SrvMngr/Plugin/Cache.pm b/root/usr/share/smanager/lib/SrvMngr/Plugin/Cache.pm new file mode 100644 index 0000000..1fc186b --- /dev/null +++ b/root/usr/share/smanager/lib/SrvMngr/Plugin/Cache.pm @@ -0,0 +1,73 @@ +package SrvMngr::Plugin::Cache; +use Mojo::Base -base; + +=head1 NAME + +Mojolicious::Plugin::Renderer::WithoutCache::Cache - Mojo::Cache that doesn't cache + +=head1 VERSION + +Version 0.04 + +=cut + +our $VERSION = '0.04'; +$VERSION = eval $VERSION; + +=head1 SYNOPSIS + +You probably don't want to use this directly. + + my $cache = Mojolicious::Plugin::Renderer::WithoutCache::Cache->new; + # this cache does nothing + +=head1 DESCRIPTION + +A cache object that's compatible to Mojo::Cache but does nothing. It does +not save or return any values. It's always empty. + +=head1 METHODS + +=head2 get + +Does nothing. Returns C. + +=cut + +sub get {} + +=head2 set + +Does nothing. Returns C<$self> so chaining is possible. + +=cut + +sub set { shift; } + +=head2 max_keys + +Always returns zero. Can't be set. We don't want any keys. + +=cut + +sub max_keys { 0 } + +=head1 AUTHOR + +simbabque, C<< >> + +=head1 BUGS + +Please report any bugs or feature requests through an issue +on github at L. + +=head1 LICENSE + +Copyright (C) simbabque. + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut + +1; diff --git a/root/usr/share/smanager/lib/SrvMngr/Plugin/WithoutCache.pm b/root/usr/share/smanager/lib/SrvMngr/Plugin/WithoutCache.pm new file mode 100644 index 0000000..710f276 --- /dev/null +++ b/root/usr/share/smanager/lib/SrvMngr/Plugin/WithoutCache.pm @@ -0,0 +1,94 @@ +package SrvMngr::Plugin::WithoutCache; +use Mojo::Base 'Mojolicious::Plugin'; +use SrvMngr::Plugin::Cache; + +=head1 NAME + +Mojolicious::Plugin::Renderer::WithoutCache - Disable the template cache in your Mojo app + +=begin html + +

+ +Coverage Status +

+ +=end html + +=head1 VERSION + +Version 0.04 + +=cut + +our $VERSION = '0.04'; +$VERSION = eval $VERSION; + +=head1 SYNOPSIS + +This plugin turns off the renderer's cache in L and L applications. + + use Mojolicious::Lite; + plugin 'Renderer::WithoutCache'; + +=head1 DESCRIPTION + +This does what it says on the box. It turns off caching for the L +or any other renderer that's inside C<$app-Erenderer> by injecting a cache object that +does not do anything. This is superior to setting the C of L +to C<0> if you plan to do a lot of uncached requests, because L +will still try to cache, and every time L sets a value in the cache it +looks at the C, and then stops. + +Doing nothing at all is cheaper. But not a lot really. + +=head1 METHODS + +=head2 register + +Register the plugin in a L application. + + $plugin->register(Mojolicious->new); + +=cut + +sub register { + my ( $self, $app ) = @_; + $app->renderer->cache( SrvMngr::Plugin::Cache->new ); +} + +=head1 AUTHOR + +simbabque, C<< >> + +=head1 BUGS + +Please report any bugs or feature requests through an issue +on github at L. + +=head1 SUPPORT + +You can find documentation for this module with the perldoc command. + + perldoc Mojolicious::Plugin::Renderer::WithoutCache + +=head2 Why would I want to turn off the cache? + +I don't know. + +=head1 ACKNOWLEDGEMENTS + +This plugin was inspired by Tom Hunt asking about turning the cache off +on L. + +=head1 LICENSE + +Copyright (C) simbabque. + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut + +1; + diff --git a/smeserver-manager.spec b/smeserver-manager.spec index 89f0245..d02fdb3 100644 --- a/smeserver-manager.spec +++ b/smeserver-manager.spec @@ -2,7 +2,7 @@ Summary: Sme server navigation module : manager 2 %define name smeserver-manager Name: %{name} %define version 11.0.0 -%define release 18 +%define release 19 Version: %{version} Release: %{release}%{?dist} License: GPL @@ -108,6 +108,9 @@ true %defattr(-,root,root) %changelog +* Thu Sep 05 2024 Brian Read 11.0.0-19.sme +- Add in mojo plugin WithoutCache [SME: 12695] + * Sun Aug 25 2024 Brian Read 11.0.0-18.sme - Move flag to emojii from downloaded jpg. Fix singleton locale issue[SME: 12706]