From c81bc8e66f45ca7ae9a7f22b5236a11e2e55931d Mon Sep 17 00:00:00 2001 From: Jess Lee Date: Fri, 14 Jun 2019 19:52:16 -0400 Subject: [PATCH] Clean up internal and add admin tool for cache busting (#3166) * remove members internal page * add manual cache busting form * add missing files --- .../internal/members_controller.rb | 24 ------------ app/controllers/internal/tools_controller.rb | 37 +++++++++++++++++++ app/views/internal/members/index.html.erb | 23 ------------ app/views/internal/tools/index.html.erb | 23 ++++++++++++ config/routes.rb | 6 ++- 5 files changed, 65 insertions(+), 48 deletions(-) delete mode 100644 app/controllers/internal/members_controller.rb create mode 100644 app/controllers/internal/tools_controller.rb delete mode 100644 app/views/internal/members/index.html.erb create mode 100644 app/views/internal/tools/index.html.erb diff --git a/app/controllers/internal/members_controller.rb b/app/controllers/internal/members_controller.rb deleted file mode 100644 index c6f6e1394..000000000 --- a/app/controllers/internal/members_controller.rb +++ /dev/null @@ -1,24 +0,0 @@ -class Internal::MembersController < Internal::ApplicationController - layout "internal" - - def index - # with_role and with_any_role return an array and not an ActiveRecord collection - @users = case params[:state] - when "by-scholars" - User.with_role(:workshop_pass).sort_by(&:name) - when "by-members" - User.with_any_role(:level_1_member, - :level_2_member, - :level_3_member, - :level_4_member, - :triple_unicorn_member).sort_by(&:name) - else # members and scholars - User.with_any_role(:level_1_member, - :level_2_member, - :level_3_member, - :level_4_member, - :triple_unicorn_member, - :workshop_pass).sort_by(&:name) - end - end -end diff --git a/app/controllers/internal/tools_controller.rb b/app/controllers/internal/tools_controller.rb new file mode 100644 index 000000000..9de1080f1 --- /dev/null +++ b/app/controllers/internal/tools_controller.rb @@ -0,0 +1,37 @@ +class Internal::ToolsController < Internal::ApplicationController + layout "internal" + + def index; end + + def bust_cache + handle_dead_path if params[:dead_link] + handle_user_cache if params[:bust_user] + redirect_to "/internal/tools" + end + + private + + def handle_dead_path + bust_link(params[:dead_link]) + end + + def handle_user_cache + user = User.find(params[:bust_user].to_i) + user.touch(:profile_updated_at, :last_followed_at, :last_comment_at) + bust_link(user.path) + end + + def handle_article_cache + article = User.find(params[:bust_artice].to_i) + article.touch(:last_commented_at) + CacheBuster.new.bust_article(article) + end + + def bust_link(link) + cb = CacheBuster.new + cb.bust(link) + cb.bust(link + "/") + cb.bust(link + "?i=i") + cb.bust(link + "/?i=i") + end +end diff --git a/app/views/internal/members/index.html.erb b/app/views/internal/members/index.html.erb deleted file mode 100644 index 1ac6f57e6..000000000 --- a/app/views/internal/members/index.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -

Sustaining Member/Scholars

- -;">Members and Scholars | -;">Members Only | -;">Scholars Only - -<% @users.each do |user| %> -
"> -

- <%= user.name %> @<%= user.username %> - | Go to admin page -

-
- <% if user.scholar %> - Scholar - | Workshop pass expires: <%= user.workshop_expiration ? user.workshop_expiration.strftime("%b %d, %Y") : "never" %> - <% else %> - Member - | $<%= user.monthly_dues / 100 %> - <% end %> -
-<% end %> -
diff --git a/app/views/internal/tools/index.html.erb b/app/views/internal/tools/index.html.erb new file mode 100644 index 000000000..5910c3f68 --- /dev/null +++ b/app/views/internal/tools/index.html.erb @@ -0,0 +1,23 @@ +

General Purpose Fastly Purge

+

For a page that should 404:

+<%= form_tag "/internal/tools/bust_cache" do %> + <%= label_tag("Relative Link:") %> + <%= text_field_tag :dead_link, nil, placeholder: "/devteam/page" %> + <%= submit_tag("Clear Cache") %> +<% end %> +
+

Bust Cache For Specific Content

+

This clears the rails cache & the fastly cache.

+ +<%= form_tag "/internal/tools/bust_cache" do %> + <%= label_tag("Article id: ") %> + <%= text_field_tag :bust_article, nil, placeholder: "12345" %> + <%= submit_tag("Clear Cache") %> +<% end %> +
+<%= form_tag "/internal/tools/bust_cache" do %> + <%= label_tag("User id: ") %> + <%= text_field_tag :bust_user, nil, placeholder: "12345" %> + <%= submit_tag("Clear Cache") %> +<% end %> + diff --git a/config/routes.rb b/config/routes.rb index 84b7c0d89..d78550603 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -35,7 +35,6 @@ Rails.application.routes.draw do resources :events, only: %i[index create update] resources :feedback_messages, only: %i[index show] resources :listings, only: %i[index edit update destroy], controller: "classified_listings" - resources :members, only: [:index] resources :pages, only: %i[index new create edit update destroy] resources :reactions, only: [:update] resources :reports, only: %i[index show], controller: "feedback_messages" do @@ -55,6 +54,11 @@ Rails.application.routes.draw do end end resources :welcome, only: %i[index create] + resources :tools, only: %i[index create] do + collection do + post "bust_cache" + end + end end namespace :api, defaults: { format: "json" } do