From 71dbd7288cd060465033ffc42a918b62ac47006f Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Sun, 7 Mar 2021 23:55:32 -0800 Subject: [PATCH 01/70] update_attributes -> update --- app/models/users/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/users/user.rb b/app/models/users/user.rb index f498643b6..893acb68b 100644 --- a/app/models/users/user.rb +++ b/app/models/users/user.rb @@ -277,7 +277,7 @@ def update_without_password(params, *options) params.delete(:username) end - result = update_attributes(params, *options) + result = update(params, *options) clean_up_passwords result end From db6dba8f32eb17d129b90f595f157d6e1fbb0872 Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Mon, 8 Mar 2021 00:04:07 -0800 Subject: [PATCH 02/70] Upgrade to rails 6.1 --- Gemfile.lock | 128 ++++++++++++++++++++++++++------------------------- 1 file changed, 66 insertions(+), 62 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1f6b5058c..cec52c497 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -41,38 +41,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.0.3.4) - actionpack (= 6.0.3.4) + actioncable (6.1.3) + actionpack (= 6.1.3) + activesupport (= 6.1.3) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.0.3.4) - actionpack (= 6.0.3.4) - activejob (= 6.0.3.4) - activerecord (= 6.0.3.4) - activestorage (= 6.0.3.4) - activesupport (= 6.0.3.4) + actionmailbox (6.1.3) + actionpack (= 6.1.3) + activejob (= 6.1.3) + activerecord (= 6.1.3) + activestorage (= 6.1.3) + activesupport (= 6.1.3) mail (>= 2.7.1) - actionmailer (6.0.3.4) - actionpack (= 6.0.3.4) - actionview (= 6.0.3.4) - activejob (= 6.0.3.4) + actionmailer (6.1.3) + actionpack (= 6.1.3) + actionview (= 6.1.3) + activejob (= 6.1.3) + activesupport (= 6.1.3) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.0.3.4) - actionview (= 6.0.3.4) - activesupport (= 6.0.3.4) - rack (~> 2.0, >= 2.0.8) + actionpack (6.1.3) + actionview (= 6.1.3) + activesupport (= 6.1.3) + rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.0.3.4) - actionpack (= 6.0.3.4) - activerecord (= 6.0.3.4) - activestorage (= 6.0.3.4) - activesupport (= 6.0.3.4) + actiontext (6.1.3) + actionpack (= 6.1.3) + activerecord (= 6.1.3) + activestorage (= 6.1.3) + activesupport (= 6.1.3) nokogiri (>= 1.8.5) - actionview (6.0.3.4) - activesupport (= 6.0.3.4) + actionview (6.1.3) + activesupport (= 6.1.3) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -81,29 +83,31 @@ GEM activerecord (>= 4.0) active_storage_validations (0.9.2) rails (>= 5.2.0) - activejob (6.0.3.4) - activesupport (= 6.0.3.4) + activejob (6.1.3) + activesupport (= 6.1.3) globalid (>= 0.3.6) - activemodel (6.0.3.4) - activesupport (= 6.0.3.4) + activemodel (6.1.3) + activesupport (= 6.1.3) activemodel-serializers-xml (1.0.2) activemodel (> 5.x) activesupport (> 5.x) builder (~> 3.1) - activerecord (6.0.3.4) - activemodel (= 6.0.3.4) - activesupport (= 6.0.3.4) - activestorage (6.0.3.4) - actionpack (= 6.0.3.4) - activejob (= 6.0.3.4) - activerecord (= 6.0.3.4) + activerecord (6.1.3) + activemodel (= 6.1.3) + activesupport (= 6.1.3) + activestorage (6.1.3) + actionpack (= 6.1.3) + activejob (= 6.1.3) + activerecord (= 6.1.3) + activesupport (= 6.1.3) marcel (~> 0.3.1) - activesupport (6.0.3.4) + mimemagic (~> 0.3.2) + activesupport (6.1.3) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) acts_as_list (1.0.3) activerecord (>= 4.2) addressable (2.7.0) @@ -1178,7 +1182,7 @@ GEM domain_name (~> 0.5) http-form_data (2.3.0) http_parser.rb (0.6.0) - i18n (1.8.7) + i18n (1.8.9) concurrent-ruby (~> 1.0) ibm_cloud_sdk_core (1.1.1) concurrent-ruby (~> 1.0) @@ -1253,7 +1257,7 @@ GEM mini_portile2 (2.5.0) mini_racer (0.3.1) libv8 (~> 8.4.255) - minitest (5.14.3) + minitest (5.14.4) mixpanel-ruby (2.2.2) multi_json (1.14.1) multi_test (0.1.2) @@ -1262,7 +1266,7 @@ GEM nenv (0.3.0) nested_form (0.3.2) newrelic_rpm (6.15.0) - nio4r (2.5.5) + nio4r (2.5.7) nokogiri (1.11.1) mini_portile2 (~> 2.5.0) racc (~> 1.4) @@ -1324,20 +1328,20 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.0.3.4) - actioncable (= 6.0.3.4) - actionmailbox (= 6.0.3.4) - actionmailer (= 6.0.3.4) - actionpack (= 6.0.3.4) - actiontext (= 6.0.3.4) - actionview (= 6.0.3.4) - activejob (= 6.0.3.4) - activemodel (= 6.0.3.4) - activerecord (= 6.0.3.4) - activestorage (= 6.0.3.4) - activesupport (= 6.0.3.4) - bundler (>= 1.3.0) - railties (= 6.0.3.4) + rails (6.1.3) + actioncable (= 6.1.3) + actionmailbox (= 6.1.3) + actionmailer (= 6.1.3) + actionpack (= 6.1.3) + actiontext (= 6.1.3) + actionview (= 6.1.3) + activejob (= 6.1.3) + activemodel (= 6.1.3) + activerecord (= 6.1.3) + activestorage (= 6.1.3) + activesupport (= 6.1.3) + bundler (>= 1.15.0) + railties (= 6.1.3) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -1370,12 +1374,12 @@ GEM sassc-rails (>= 1.3, < 3) rails_serve_static_assets (0.0.5) rails_stdout_logging (0.0.5) - railties (6.0.3.4) - actionpack (= 6.0.3.4) - activesupport (= 6.0.3.4) + railties (6.1.3) + actionpack (= 6.1.3) + activesupport (= 6.1.3) method_source rake (>= 0.8.7) - thor (>= 0.20.3, < 2.0) + thor (~> 1.0) rainbow (3.0.0) rake (13.0.3) rb-fsevent (0.10.4) @@ -1500,8 +1504,8 @@ GEM tilt (2.0.10) timeago_js (3.0.2.2) tribute (3.6.0.0) - tzinfo (1.2.9) - thread_safe (~> 0.1) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) tzinfo-data (1.2021.1) tzinfo (>= 1.0.0) uglifier (4.2.0) From 014ea1c3f8985c713c45b2460d214e4229e3a341 Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Thu, 29 Jul 2021 02:15:50 -0700 Subject: [PATCH 03/70] bundle update --- Gemfile.lock | 1290 ++++++++++++++++++++++++++------------------------ 1 file changed, 673 insertions(+), 617 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c2f13fbe7..baecfdc61 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -41,40 +41,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.3) - actionpack (= 6.1.3) - activesupport (= 6.1.3) + actioncable (6.1.4) + actionpack (= 6.1.4) + activesupport (= 6.1.4) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.3) - actionpack (= 6.1.3) - activejob (= 6.1.3) - activerecord (= 6.1.3) - activestorage (= 6.1.3) - activesupport (= 6.1.3) + actionmailbox (6.1.4) + actionpack (= 6.1.4) + activejob (= 6.1.4) + activerecord (= 6.1.4) + activestorage (= 6.1.4) + activesupport (= 6.1.4) mail (>= 2.7.1) - actionmailer (6.1.3) - actionpack (= 6.1.3) - actionview (= 6.1.3) - activejob (= 6.1.3) - activesupport (= 6.1.3) + actionmailer (6.1.4) + actionpack (= 6.1.4) + actionview (= 6.1.4) + activejob (= 6.1.4) + activesupport (= 6.1.4) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.3) - actionview (= 6.1.3) - activesupport (= 6.1.3) + actionpack (6.1.4) + actionview (= 6.1.4) + activesupport (= 6.1.4) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.3) - actionpack (= 6.1.3) - activerecord (= 6.1.3) - activestorage (= 6.1.3) - activesupport (= 6.1.3) + actiontext (6.1.4) + actionpack (= 6.1.4) + activerecord (= 6.1.4) + activestorage (= 6.1.4) + activesupport (= 6.1.4) nokogiri (>= 1.8.5) - actionview (6.1.3) - activesupport (= 6.1.3) + actionview (6.1.4) + activesupport (= 6.1.4) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -83,31 +83,31 @@ GEM activerecord (>= 4.0) active_storage_validations (0.9.5) rails (>= 5.2.0) - activejob (6.1.3) - activesupport (= 6.1.3) + activejob (6.1.4) + activesupport (= 6.1.4) globalid (>= 0.3.6) - activemodel (6.1.3) - activesupport (= 6.1.3) + activemodel (6.1.4) + activesupport (= 6.1.4) activemodel-serializers-xml (1.0.2) activemodel (> 5.x) activesupport (> 5.x) builder (~> 3.1) - activerecord (6.1.3) - activemodel (= 6.1.3) - activesupport (= 6.1.3) - activestorage (6.1.3) - actionpack (= 6.1.3) - activejob (= 6.1.3) - activerecord (= 6.1.3) - activesupport (= 6.1.3) - marcel (~> 0.3.1) - mimemagic (~> 0.3.2) - activesupport (6.1.3) + activerecord (6.1.4) + activemodel (= 6.1.4) + activesupport (= 6.1.4) + activestorage (6.1.4) + actionpack (= 6.1.4) + activejob (= 6.1.4) + activerecord (= 6.1.4) + activesupport (= 6.1.4) + marcel (~> 1.0.0) + mini_mime (>= 1.1.0) + activesupport (6.1.4) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) acts_as_list (1.0.4) activerecord (>= 4.2) addressable (2.7.0) @@ -116,633 +116,663 @@ GEM rails authority (3.3.0) activesupport (>= 3.0.0) - autoprefixer-rails (9.8.4) - execjs + autoprefixer-rails (10.2.5.1) + execjs (> 0) aws-eventstream (1.1.1) - aws-partitions (1.469.0) + aws-partitions (1.480.0) aws-sdk (3.0.2) aws-sdk-resources (~> 3) - aws-sdk-accessanalyzer (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-accessanalyzer (1.20.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-acm (1.43.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-acmpca (1.37.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-acm (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-alexaforbusiness (1.48.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-acmpca (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-amplify (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-alexaforbusiness (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-amplifybackend (1.6.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-amplify (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-apigateway (1.63.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-amplifybackend (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-apigatewaymanagementapi (1.22.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-apigateway (1.61.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-apigatewayv2 (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-apigatewaymanagementapi (1.21.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-appconfig (1.15.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-apigatewayv2 (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-appflow (1.12.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-appconfig (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-appintegrationsservice (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-appflow (1.9.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-applicationautoscaling (1.52.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-appintegrationsservice (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-applicationcostprofiler (1.1.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-applicationautoscaling (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-applicationdiscoveryservice (1.36.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-applicationdiscoveryservice (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-applicationinsights (1.19.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-applicationinsights (1.18.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-appmesh (1.37.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-appmesh (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-appregistry (1.6.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-appregistry (1.5.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-apprunner (1.1.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-appstream (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-appstream (1.53.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-appsync (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-appsync (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-athena (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-athena (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-auditmanager (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-auditmanager (1.9.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-augmentedairuntime (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-augmentedairuntime (1.14.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-autoscaling (1.58.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-autoscaling (1.65.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-autoscalingplans (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-autoscalingplans (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-backup (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-backup (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-batch (1.45.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-batch (1.49.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-braket (1.7.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-braket (1.9.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-budgets (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-budgets (1.39.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-chime (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-chime (1.52.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloud9 (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloud9 (1.36.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-clouddirectory (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-clouddirectory (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudformation (1.49.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudformation (1.54.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudfront (1.49.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudfront (1.54.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsm (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudhsm (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsmv2 (1.33.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudhsmv2 (1.34.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudsearch (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudsearch (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudsearchdomain (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudsearchdomain (1.25.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudtrail (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudtrail (1.36.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatch (1.50.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudwatch (1.53.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchevents (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudwatchevents (1.48.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchlogs (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudwatchlogs (1.42.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codeartifact (1.8.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codeartifact (1.11.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codebuild (1.71.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codebuild (1.75.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codecommit (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codecommit (1.43.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codedeploy (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codedeploy (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codeguruprofiler (1.15.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codeguruprofiler (1.16.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codegurureviewer (1.16.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codegurureviewer (1.19.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codepipeline (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codepipeline (1.45.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codestar (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codestar (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codestarconnections (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codestarconnections (1.16.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-codestarnotifications (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-codestarnotifications (1.11.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentity (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cognitoidentity (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentityprovider (1.50.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cognitoidentityprovider (1.55.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-cognitosync (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cognitosync (1.28.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-comprehend (1.45.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-comprehend (1.47.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-comprehendmedical (1.25.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-comprehendmedical (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-computeoptimizer (1.16.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-computeoptimizer (1.20.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-configservice (1.59.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-configservice (1.63.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-connect (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-connect (1.47.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-connectcontactlens (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-connectcontactlens (1.3.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-connectparticipant (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-connectparticipant (1.12.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-core (3.114.3) + aws-sdk-core (3.118.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-costandusagereportservice (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-costandusagereportservice (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-costexplorer (1.63.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-customerprofiles (1.8.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-costexplorer (1.59.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-databasemigrationservice (1.55.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-customerprofiles (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-dataexchange (1.14.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-databasemigrationservice (1.52.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-datapipeline (1.28.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-dataexchange (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-datasync (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-datapipeline (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-dax (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-datasync (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-detective (1.19.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-dax (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-devicefarm (1.43.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-detective (1.15.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-devopsguru (1.9.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-devicefarm (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-directconnect (1.44.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-devopsguru (1.5.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-directoryservice (1.40.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-directconnect (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-dlm (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-directoryservice (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-docdb (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-dlm (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-dynamodb (1.61.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-docdb (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-dynamodbstreams (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-dynamodb (1.60.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ebs (1.14.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-dynamodbstreams (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ec2 (1.252.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ebs (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ec2instanceconnect (1.15.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ec2 (1.227.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ecr (1.43.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ec2instanceconnect (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ecrpublic (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ecr (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ecs (1.82.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ecrpublic (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-efs (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ecs (1.75.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-eks (1.59.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-efs (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-elasticache (1.58.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-eks (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-elasticbeanstalk (1.43.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticache (1.54.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-elasticinference (1.13.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticbeanstalk (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-elasticloadbalancing (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticinference (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-elasticloadbalancingv2 (1.65.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancing (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-elasticsearchservice (1.53.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancingv2 (1.61.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-elastictranscoder (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticsearchservice (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-emr (1.47.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-elastictranscoder (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-emrcontainers (1.5.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-emr (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-eventbridge (1.26.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-emrcontainers (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-finspace (1.3.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-eventbridge (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-finspacedata (1.2.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-firehose (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-firehose (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-fms (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-fis (1.2.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-forecastqueryservice (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-fms (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-forecastservice (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-forecastqueryservice (1.13.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-frauddetector (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-forecastservice (1.22.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-fsx (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-frauddetector (1.20.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-gamelift (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-fsx (1.39.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-glacier (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-gamelift (1.45.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-globalaccelerator (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-glacier (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-glue (1.85.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-globalaccelerator (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-gluedatabrew (1.6.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-glue (1.91.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-greengrass (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-gluedatabrew (1.10.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-greengrassv2 (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-greengrass (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-groundstation (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-greengrassv2 (1.5.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-guardduty (1.45.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-groundstation (1.19.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-health (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-guardduty (1.46.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-healthlake (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-health (1.37.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-honeycode (1.6.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-healthlake (1.5.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iam (1.49.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-honeycode (1.7.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-identitystore (1.5.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iam (1.58.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-imagebuilder (1.20.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-identitystore (1.7.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-importexport (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-imagebuilder (1.26.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-importexport (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv2 (~> 1.0) - aws-sdk-inspector (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-inspector (1.35.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-iot (1.70.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-iot1clickdevicesservice (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-iot1clickprojects (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotanalytics (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iot (1.67.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotdataplane (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iot1clickdevicesservice (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotdeviceadvisor (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iot1clickprojects (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotevents (1.25.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotanalytics (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ioteventsdata (1.17.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotdataplane (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotfleethub (1.3.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotdeviceadvisor (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotjobsdataplane (1.28.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotevents (1.23.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotsecuretunneling (1.12.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ioteventsdata (1.15.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotsitewise (1.26.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotfleethub (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotthingsgraph (1.15.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotjobsdataplane (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-iotwireless (1.12.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotsecuretunneling (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ivs (1.10.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotsitewise (1.20.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kafka (1.37.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotthingsgraph (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kendra (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-iotwireless (1.5.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kinesis (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ivs (1.8.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kinesisanalytics (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kafka (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kinesisanalyticsv2 (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kendra (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kinesisvideo (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesis (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kinesisvideoarchivedmedia (1.35.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesisanalytics (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kinesisvideomedia (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesisanalyticsv2 (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kinesisvideosignalingchannels (1.11.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideo (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kms (1.45.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideoarchivedmedia (1.33.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lakeformation (1.15.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideomedia (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lambda (1.65.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideosignalingchannels (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lambdapreview (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-kms (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lex (1.37.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lakeformation (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lexmodelbuildingservice (1.48.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lambda (1.61.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lexmodelsv2 (1.7.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lambdapreview (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lexruntimev2 (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lex (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-licensemanager (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lexmodelbuildingservice (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lightsail (1.53.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lexmodelsv2 (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-locationservice (1.6.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lexruntimev2 (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lookoutequipment (1.1.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-licensemanager (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lookoutforvision (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lightsail (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-lookoutmetrics (1.5.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-locationservice (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-machinelearning (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-lookoutforvision (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-macie (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-machinelearning (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-macie2 (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-macie (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-managedblockchain (1.24.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-macie2 (1.25.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-marketplacecatalog (1.13.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-managedblockchain (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-marketplacecommerceanalytics (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-marketplacecatalog (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-marketplaceentitlementservice (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-marketplacecommerceanalytics (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-marketplacemetering (1.35.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-marketplaceentitlementservice (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mediaconnect (1.35.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-marketplacemetering (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mediaconvert (1.70.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mediaconnect (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-medialive (1.74.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mediaconvert (1.64.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mediapackage (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-medialive (1.67.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mediapackagevod (1.25.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mediapackage (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mediastore (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mediapackagevod (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mediastoredata (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mediastore (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mediatailor (1.42.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mediastoredata (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mgn (1.2.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mediatailor (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-migrationhub (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-migrationhub (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-migrationhubconfig (1.12.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-migrationhubconfig (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mobile (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mobile (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mq (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mq (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mturk (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mturk (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-mwaa (1.6.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-mwaa (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-neptune (1.36.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-neptune (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-networkfirewall (1.5.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-networkfirewall (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-networkmanager (1.12.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-networkmanager (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-nimblestudio (1.2.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-opsworks (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-opsworks (1.33.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-opsworkscm (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-opsworkscm (1.44.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-organizations (1.58.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-organizations (1.60.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-outposts (1.15.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-outposts (1.18.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-personalize (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-personalize (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-personalizeevents (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-personalizeevents (1.19.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-personalizeruntime (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-personalizeruntime (1.23.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-pi (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-pi (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-pinpoint (1.52.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-pinpoint (1.54.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-pinpointemail (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-pinpointemail (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-pinpointsmsvoice (1.23.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-pinpointsmsvoice (1.24.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-polly (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-polly (1.42.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-pricing (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-pricing (1.29.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-prometheusservice (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-prometheusservice (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-qldb (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-proton (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-qldbsession (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-qldb (1.17.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-quicksight (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-qldbsession (1.14.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ram (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-quicksight (1.49.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-rds (1.117.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ram (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-rdsdataservice (1.25.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-rds (1.123.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-redshift (1.55.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-rdsdataservice (1.26.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-redshiftdataapiservice (1.6.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-redshift (1.66.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-rekognition (1.49.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-redshiftdataapiservice (1.9.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-resourcegroups (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-rekognition (1.52.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-resourcegroupstaggingapi (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-resourcegroups (1.37.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-resources (3.94.1) + aws-sdk-resourcegroupstaggingapi (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-resources (3.106.0) aws-sdk-accessanalyzer (~> 1) aws-sdk-acm (~> 1) aws-sdk-acmpca (~> 1) @@ -756,10 +786,12 @@ GEM aws-sdk-appflow (~> 1) aws-sdk-appintegrationsservice (~> 1) aws-sdk-applicationautoscaling (~> 1) + aws-sdk-applicationcostprofiler (~> 1) aws-sdk-applicationdiscoveryservice (~> 1) aws-sdk-applicationinsights (~> 1) aws-sdk-appmesh (~> 1) aws-sdk-appregistry (~> 1) + aws-sdk-apprunner (~> 1) aws-sdk-appstream (~> 1) aws-sdk-appsync (~> 1) aws-sdk-athena (~> 1) @@ -839,7 +871,10 @@ GEM aws-sdk-emr (~> 1) aws-sdk-emrcontainers (~> 1) aws-sdk-eventbridge (~> 1) + aws-sdk-finspace (~> 1) + aws-sdk-finspacedata (~> 1) aws-sdk-firehose (~> 1) + aws-sdk-fis (~> 1) aws-sdk-fms (~> 1) aws-sdk-forecastqueryservice (~> 1) aws-sdk-forecastservice (~> 1) @@ -897,7 +932,9 @@ GEM aws-sdk-licensemanager (~> 1) aws-sdk-lightsail (~> 1) aws-sdk-locationservice (~> 1) + aws-sdk-lookoutequipment (~> 1) aws-sdk-lookoutforvision (~> 1) + aws-sdk-lookoutmetrics (~> 1) aws-sdk-machinelearning (~> 1) aws-sdk-macie (~> 1) aws-sdk-macie2 (~> 1) @@ -914,6 +951,7 @@ GEM aws-sdk-mediastore (~> 1) aws-sdk-mediastoredata (~> 1) aws-sdk-mediatailor (~> 1) + aws-sdk-mgn (~> 1) aws-sdk-migrationhub (~> 1) aws-sdk-migrationhubconfig (~> 1) aws-sdk-mobile (~> 1) @@ -923,6 +961,7 @@ GEM aws-sdk-neptune (~> 1) aws-sdk-networkfirewall (~> 1) aws-sdk-networkmanager (~> 1) + aws-sdk-nimblestudio (~> 1) aws-sdk-opsworks (~> 1) aws-sdk-opsworkscm (~> 1) aws-sdk-organizations (~> 1) @@ -937,6 +976,7 @@ GEM aws-sdk-polly (~> 1) aws-sdk-pricing (~> 1) aws-sdk-prometheusservice (~> 1) + aws-sdk-proton (~> 1) aws-sdk-qldb (~> 1) aws-sdk-qldbsession (~> 1) aws-sdk-quicksight (~> 1) @@ -951,6 +991,9 @@ GEM aws-sdk-robomaker (~> 1) aws-sdk-route53 (~> 1) aws-sdk-route53domains (~> 1) + aws-sdk-route53recoverycluster (~> 1) + aws-sdk-route53recoverycontrolconfig (~> 1) + aws-sdk-route53recoveryreadiness (~> 1) aws-sdk-route53resolver (~> 1) aws-sdk-s3 (~> 1) aws-sdk-s3control (~> 1) @@ -977,6 +1020,8 @@ GEM aws-sdk-sns (~> 1) aws-sdk-sqs (~> 1) aws-sdk-ssm (~> 1) + aws-sdk-ssmcontacts (~> 1) + aws-sdk-ssmincidents (~> 1) aws-sdk-ssoadmin (~> 1) aws-sdk-ssooidc (~> 1) aws-sdk-states (~> 1) @@ -1001,168 +1046,183 @@ GEM aws-sdk-workmailmessageflow (~> 1) aws-sdk-workspaces (~> 1) aws-sdk-xray (~> 1) - aws-sdk-robomaker (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-robomaker (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53 (1.51.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53domains (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-route53 (1.47.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-route53recoverycluster (1.1.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-route53domains (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-route53recoverycontrolconfig (1.1.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-route53resolver (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-route53recoveryreadiness (1.1.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.96.1) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-route53resolver (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.97.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.1) - aws-sdk-s3control (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-s3control (1.37.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-s3outposts (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-s3outposts (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-sagemaker (1.81.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sagemaker (1.94.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-sagemakeredgemanager (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sagemakeredgemanager (1.3.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-sagemakerfeaturestoreruntime (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sagemakerfeaturestoreruntime (1.4.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-sagemakerruntime (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sagemakerruntime (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-savingsplans (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-savingsplans (1.16.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-schemas (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-schemas (1.13.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-secretsmanager (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-secretsmanager (1.47.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-securityhub (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-securityhub (1.49.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-serverlessapplicationrepository (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-serverlessapplicationrepository (1.35.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-servicecatalog (1.59.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-servicecatalog (1.61.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-servicediscovery (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-servicediscovery (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-servicequotas (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-servicequotas (1.15.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ses (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ses (1.39.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-sesv2 (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sesv2 (1.18.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-shield (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-shield (1.39.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-signer (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-signer (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-simpledb (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-simpledb (1.27.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv2 (~> 1.0) - aws-sdk-sms (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sms (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-snowball (1.40.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-snowball (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sns (1.43.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-sns (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-sqs (1.41.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-sqs (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ssm (1.113.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ssm (1.106.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ssmcontacts (1.3.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ssoadmin (1.7.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ssmincidents (1.1.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-ssooidc (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ssoadmin (1.8.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-states (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-ssooidc (1.11.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-storagegateway (1.54.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-states (1.40.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-support (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-storagegateway (1.57.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-swf (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-support (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-synthetics (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-swf (1.28.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-textract (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-synthetics (1.14.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-timestreamquery (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-textract (1.26.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-timestreamwrite (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-timestreamquery (1.5.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-transcribeservice (1.52.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-timestreamwrite (1.5.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-transcribestreamingservice (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-transcribeservice (1.56.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-transfer (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-transcribestreamingservice (1.30.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-translate (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-transfer (1.36.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-waf (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-translate (1.32.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-wafregional (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-waf (1.39.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-wafv2 (1.18.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-wafregional (1.40.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-wellarchitected (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-wafv2 (1.22.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-workdocs (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-wellarchitected (1.6.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-worklink (1.23.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-workdocs (1.31.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-workmail (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-worklink (1.24.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-workmailmessageflow (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-workmail (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-workspaces (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-workmailmessageflow (1.13.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) - aws-sdk-xray (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-workspaces (1.54.0) + aws-sdk-core (~> 3, >= 3.118.0) + aws-sigv4 (~> 1.1) + aws-sdk-xray (1.38.0) + aws-sdk-core (~> 3, >= 3.118.0) aws-sigv4 (~> 1.1) aws-sigv2 (1.0.2) - aws-sigv4 (1.2.3) + aws-sigv4 (1.2.4) aws-eventstream (~> 1, >= 1.0.2) babel-source (5.8.35) babel-transpiler (0.7.0) @@ -1197,22 +1257,22 @@ GEM execjs coffee-script-source (1.12.2) concurrent-ruby (1.1.9) - connection_pool (2.2.3) + connection_pool (2.2.5) crass (1.0.6) csv (3.2.0) d3-rails (5.9.2) railties (>= 3.1) database_cleaner (2.0.1) database_cleaner-active_record (~> 2.0.0) - database_cleaner-active_record (2.0.0) + database_cleaner-active_record (2.0.1) activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) dateslices (0.0.4) rails (> 4) - db_text_search (0.3.1) + db_text_search (0.3.2) activerecord (>= 4.1.15, < 7.0) - debug_inspector (1.0.0) + debug_inspector (1.1.0) devise (4.8.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -1225,15 +1285,15 @@ GEM engtagger (0.2.1) erubi (1.10.0) eventmachine (1.2.7) - execjs (2.7.0) - faraday (0.17.3) + execjs (2.8.1) + faraday (0.17.4) multipart-post (>= 1.2, < 3) faraday_middleware (0.14.0) faraday (>= 0.7.4, < 1.0) faye-websocket (0.11.1) eventmachine (>= 0.12.0) websocket-driver (>= 0.5.1) - ffi (1.15.0) + ffi (1.15.3) ffi-compiler (1.0.1) ffi (>= 1.0.0) rake @@ -1241,11 +1301,11 @@ GEM flamegraph (0.9.5) font-awesome-rails (4.7.0.7) railties (>= 3.2, < 7) - friendly_id (5.3.0) + friendly_id (5.4.2) activerecord (>= 4.0.0) - globalid (0.4.2) - activesupport (>= 4.2.0) - haml (5.1.2) + globalid (0.5.1) + activesupport (>= 5.0) + haml (5.2.2) temple (>= 0.8.0) tilt html-pipeline (2.14.0) @@ -1257,7 +1317,7 @@ GEM http-cookie (~> 1.0) http-form_data (~> 2.2) http-parser (~> 1.2.0) - http-cookie (1.0.3) + http-cookie (1.0.4) domain_name (~> 0.5) http-form_data (2.3.0) http-parser (1.2.3) @@ -1278,7 +1338,7 @@ GEM image_processing (1.12.1) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) - inline_svg (1.7.1) + inline_svg (1.7.2) activesupport (>= 3.0) nokogiri (>= 1.6) jmespath (1.4.0) @@ -1288,7 +1348,7 @@ GEM thor (>= 0.14, < 2.0) jquery-ui-rails (6.0.1) railties (>= 3.2.16) - json (2.3.0) + json (2.5.1) jwt (2.2.3) kaminari (1.2.1) activesupport (>= 4.1.0) @@ -1308,7 +1368,7 @@ GEM kramdown (~> 2.0) language_filter (0.3.01) libv8-node (15.14.0.1) - listen (3.5.1) + listen (3.6.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) loofah (2.10.0) @@ -1316,8 +1376,7 @@ GEM nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) - marcel (0.3.3) - mimemagic (~> 0.3.2) + marcel (1.0.1) material_icons (2.2.1) railties (>= 3.2) medium-editor-rails (2.3.1) @@ -1328,7 +1387,7 @@ GEM method_source (1.0.0) mime-types (3.3.1) mime-types-data (~> 3.2015) - mime-types-data (3.2020.0512) + mime-types-data (3.2021.0704) mimemagic (0.3.10) nokogiri (~> 1) rake @@ -1347,9 +1406,9 @@ GEM nokogiri (1.11.7) mini_portile2 (~> 2.5.0) racc (~> 1.4) - nokogumbo (2.0.2) + nokogumbo (2.0.5) nokogiri (~> 1.8, >= 1.8.4) - onebox (1.9.29) + onebox (1.9.30) addressable (~> 2.7.0) htmlentities (~> 4.3) multi_json (~> 1.11) @@ -1394,20 +1453,20 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.1.3) - actioncable (= 6.1.3) - actionmailbox (= 6.1.3) - actionmailer (= 6.1.3) - actionpack (= 6.1.3) - actiontext (= 6.1.3) - actionview (= 6.1.3) - activejob (= 6.1.3) - activemodel (= 6.1.3) - activerecord (= 6.1.3) - activestorage (= 6.1.3) - activesupport (= 6.1.3) + rails (6.1.4) + actioncable (= 6.1.4) + actionmailbox (= 6.1.4) + actionmailer (= 6.1.4) + actionpack (= 6.1.4) + actiontext (= 6.1.4) + actionview (= 6.1.4) + activejob (= 6.1.4) + activemodel (= 6.1.4) + activerecord (= 6.1.4) + activestorage (= 6.1.4) + activesupport (= 6.1.4) bundler (>= 1.15.0) - railties (= 6.1.3) + railties (= 6.1.4) sprockets-rails (>= 2.0.0) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) @@ -1418,7 +1477,7 @@ GEM rails (>= 3.2) rails-ujs (0.1.0) railties (>= 3.1) - rails_admin (2.1.1) + rails_admin (2.2.0) activemodel-serializers-xml (>= 1.0) builder (~> 3.1) haml (>= 4.0, < 6) @@ -1430,17 +1489,15 @@ GEM rails (>= 5.0, < 7) remotipart (~> 1.3) sassc-rails (>= 1.3, < 3) - rails_serve_static_assets (0.0.5) - rails_stdout_logging (0.0.5) - railties (6.0.3.4) - actionpack (= 6.0.3.4) - activesupport (= 6.0.3.4) + railties (6.1.4) + actionpack (= 6.1.4) + activesupport (= 6.1.4) method_source - rake (>= 0.8.7) - thor (>= 0.20.3, < 2.0) + rake (>= 0.13) + thor (~> 1.0) rake (13.0.6) rb-fsevent (0.11.0) - rb-gravatar (1.0.5) + rb-gravatar (1.0.6) rb-inotify (0.10.1) ffi (~> 1.0) react-rails (2.6.1) @@ -1450,7 +1507,7 @@ GEM railties (>= 3.2) tilt redcarpet (3.5.1) - redis (4.3.1) + redis (4.4.0) remotipart (1.4.4) responders (3.0.1) actionpack (>= 5.0) @@ -1458,10 +1515,10 @@ GEM rexml (3.2.5) rinku (2.0.6) rmagick (4.2.2) - ruby-vips (2.0.17) - ffi (~> 1.9) - rubyzip (2.0.0) - sanitize (5.2.1) + ruby-vips (2.1.2) + ffi (~> 1.12) + rubyzip (2.3.2) + sanitize (5.2.3) crass (~> 1.0.2) nokogiri (>= 1.8.0) nokogumbo (~> 2.0) @@ -1511,21 +1568,20 @@ GEM terrapin (0.6.0) climate_control (>= 0.0.3, < 1.0) text-hyphen (1.4.1) - textstat (0.1.6) + textstat (0.1.7) text-hyphen (~> 1.4, >= 1.4.1) thor (1.1.0) - thread_safe (0.3.6) tilt (2.0.10) timeago_js (3.0.2.2) tribute (3.6.0.0) - tzinfo (1.2.9) - thread_safe (~> 0.1) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) uglifier (4.2.0) execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext unf_ext (0.0.7.7) - uniform_notifier (1.14.1) + uniform_notifier (1.14.2) warden (1.2.9) rack (>= 2.0.9) web-console (4.1.0) From f0dd74436bb076497d6504b604baf4b581ebf4ee Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Thu, 29 Jul 2021 02:21:14 -0700 Subject: [PATCH 04/70] rails active_storage:update --- ...e_to_active_storage_blobs.active_storage.rb | 18 ++++++++++++++++++ ...e_storage_variant_records.active_storage.rb | 12 ++++++++++++ db/schema.rb | 16 ++++++++++++---- 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20210729092029_add_service_name_to_active_storage_blobs.active_storage.rb create mode 100644 db/migrate/20210729092030_create_active_storage_variant_records.active_storage.rb diff --git a/db/migrate/20210729092029_add_service_name_to_active_storage_blobs.active_storage.rb b/db/migrate/20210729092029_add_service_name_to_active_storage_blobs.active_storage.rb new file mode 100644 index 000000000..9967a1323 --- /dev/null +++ b/db/migrate/20210729092029_add_service_name_to_active_storage_blobs.active_storage.rb @@ -0,0 +1,18 @@ +# This migration comes from active_storage (originally 20190112182829) +class AddServiceNameToActiveStorageBlobs < ActiveRecord::Migration[6.0] + def up + unless column_exists?(:active_storage_blobs, :service_name) + add_column :active_storage_blobs, :service_name, :string + + if configured_service = ActiveStorage::Blob.service.name + ActiveStorage::Blob.unscoped.update_all(service_name: configured_service) + end + + change_column :active_storage_blobs, :service_name, :string, null: false + end + end + + def down + remove_column :active_storage_blobs, :service_name + end +end diff --git a/db/migrate/20210729092030_create_active_storage_variant_records.active_storage.rb b/db/migrate/20210729092030_create_active_storage_variant_records.active_storage.rb new file mode 100644 index 000000000..a2862695e --- /dev/null +++ b/db/migrate/20210729092030_create_active_storage_variant_records.active_storage.rb @@ -0,0 +1,12 @@ +# This migration comes from active_storage (originally 20191206030411) +class CreateActiveStorageVariantRecords < ActiveRecord::Migration[6.0] + def change + create_table :active_storage_variant_records do |t| + t.belongs_to :blob, null: false, index: false + t.string :variation_digest, null: false + + t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true + t.foreign_key :active_storage_blobs, column: :blob_id + end + end +end diff --git a/db/schema.rb b/db/schema.rb index d1fb2b453..a8d7ac9d7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2,15 +2,15 @@ # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. # -# This file is the source Rails uses to define your schema when running `rails -# db:schema:load`. When creating a new database, `rails db:schema:load` tends to +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to # be faster and is potentially less error prone than running all of your # migrations from scratch. Old migrations may fail to apply correctly if those # migrations use external dependencies or application code. # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_07_05_005416) do +ActiveRecord::Schema.define(version: 2021_07_29_092030) do create_table "active_storage_attachments", force: :cascade do |t| t.string "name", null: false @@ -27,12 +27,19 @@ t.string "filename", null: false t.string "content_type" t.text "metadata" - t.bigint "byte_size", null: false + t.integer "byte_size", null: false t.string "checksum", null: false t.datetime "created_at", null: false + t.string "service_name", null: false t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true end + create_table "active_storage_variant_records", force: :cascade do |t| + t.bigint "blob_id", null: false + t.string "variation_digest", null: false + t.index ["blob_id", "variation_digest"], name: "index_active_storage_variant_records_uniqueness", unique: true + end + create_table "api_keys", force: :cascade do |t| t.integer "user_id" t.string "key" @@ -3637,6 +3644,7 @@ end add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id" + add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id" add_foreign_key "api_keys", "users" add_foreign_key "api_requests", "application_integrations" add_foreign_key "api_requests", "integration_authorizations" From 72543282d357a6765b6bdfaac248e22c76b442ee Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Thu, 29 Jul 2021 11:49:55 -0700 Subject: [PATCH 05/70] placeholder for testing against thredded master --- Gemfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile b/Gemfile index 0a2539938..f94cfcb14 100644 --- a/Gemfile +++ b/Gemfile @@ -75,6 +75,7 @@ gem 'barnes' # Forum gem 'thredded', git: 'https://github.com/indentlabs/thredded.git', branch: 'feature/report-posts' +# gem 'thredded', git: 'https://github.com/thredded/thredded', branch: 'master' gem 'rails-ujs' gem 'language_filter' From f874ad0d0eb26fac476d6aaa3ed44077d19b64e0 Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Tue, 14 Sep 2021 19:22:35 -0700 Subject: [PATCH 06/70] placeholder for 6.1 thredded --- Gemfile | 1 + Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index f94cfcb14..3f3b25335 100644 --- a/Gemfile +++ b/Gemfile @@ -76,6 +76,7 @@ gem 'barnes' # Forum gem 'thredded', git: 'https://github.com/indentlabs/thredded.git', branch: 'feature/report-posts' # gem 'thredded', git: 'https://github.com/thredded/thredded', branch: 'master' +# gem 'thredded', git: 'https://github.com/sudara/thredded', branch: 'master' gem 'rails-ujs' gem 'language_filter' diff --git a/Gemfile.lock b/Gemfile.lock index baecfdc61..a1195fdea 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -116,8 +116,8 @@ GEM rails authority (3.3.0) activesupport (>= 3.0.0) - autoprefixer-rails (10.2.5.1) - execjs (> 0) + autoprefixer-rails (10.3.3.0) + execjs (~> 2) aws-eventstream (1.1.1) aws-partitions (1.480.0) aws-sdk (3.0.2) @@ -1440,7 +1440,7 @@ GEM nio4r (~> 2.0) puma-heroku (2.0.0) puma (>= 5.0, < 6.0) - pundit (2.1.0) + pundit (2.1.1) activesupport (>= 3.0.0) racc (1.5.2) rack (2.2.3) From 468e1ed2f0f8ad0f2b49cf74efd03852fd1bc7d9 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 12:51:27 -0700 Subject: [PATCH 07/70] don't duplicate contributing universes in sidenav --- app/controllers/application_controller.rb | 2 +- app/views/layouts/_sidenav.html.erb | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 6e5b9a9f5..cd3e10b22 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -159,7 +159,7 @@ def cache_contributable_universe_ids cache_current_user_content @contributable_universe_ids ||= if user_signed_in? - current_user.contributable_universe_ids + @current_user_content.fetch('Universe', []).map(&:id) + current_user.contributable_universe_ids else [] end diff --git a/app/views/layouts/_sidenav.html.erb b/app/views/layouts/_sidenav.html.erb index 6d07ff4a7..9338dd49b 100644 --- a/app/views/layouts/_sidenav.html.erb +++ b/app/views/layouts/_sidenav.html.erb @@ -17,8 +17,7 @@
    - <%# TODO: we should use a cache here %> - <% (@current_user_content.fetch('Universe', []) + current_user.contributable_universes).sort_by(&:name).each do |universe| %> + <% @current_user_content.fetch('Universe', []).sort_by(&:name).each do |universe| %>
  • <%= link_to "?universe=#{universe.id}", class: 'waves-effect' do %> From 74302f7b25531b85ed2c8a3dab677d4c47c7e492 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 16:42:59 -0700 Subject: [PATCH 08/70] remove legacy links display & banner --- .../content/panels/_associations.html.erb | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/app/views/content/panels/_associations.html.erb b/app/views/content/panels/_associations.html.erb index d9b68636d..f6976620a 100644 --- a/app/views/content/panels/_associations.html.erb +++ b/app/views/content/panels/_associations.html.erb @@ -29,37 +29,5 @@ locals: { value: link_codes, content: content } %> <% end %> - - <% if user_signed_in? %> -
    - Notice: The newest Notebook.ai release is adding the ability to create your own link - fields, which includes a rather large migration of all existing link fields into a new linking system. - Links that haven't been migrated yet can be seen below this message; links on the new system appear above. -

    - Thank you for your patience during this large rewrite! This notice will automatically disappear after the - migration has completed for everyone. -

    - — Andrew -
    - <% end %> - - <%# TODO: remove these after finishing link migration script %> - <% relations.each do |name, params| %> - <% - results = params[:related_class].where("#{params[:through_relation].downcase}_id": content.id) - .map { |content| content.send(params[:inverse_class].downcase) } - .select { |content| content && content.readable_by?(current_user || User.new) } - %> - <% next unless results.any? %> - -
    - <%= params[:relation_text].to_s.titleize.downcase %> of -
    - <%= - link_codes = results.map { |page| "#{page.page_type}-#{page.id}" } - render partial: "content/display/attribute_value/link", - locals: { value: link_codes, content: content } - %> - <% end %>
\ No newline at end of file From 70126b487cdb60bff5361fe9e349d89600f31b7c Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 16:42:59 -0700 Subject: [PATCH 09/70] remove legacy links display & banner --- .../content/panels/_associations.html.erb | 36 ------------------- 1 file changed, 36 deletions(-) diff --git a/app/views/content/panels/_associations.html.erb b/app/views/content/panels/_associations.html.erb index d9b68636d..3c2b17a6e 100644 --- a/app/views/content/panels/_associations.html.erb +++ b/app/views/content/panels/_associations.html.erb @@ -2,10 +2,6 @@ TODO: everything here (probably) should move to the ContentSerializer so we don't have this heavy logic in a random partial %> -<% - relations = Rails.application.config.content_relations[content.class.name] - relations ||= [] -%>
<%= render partial: 'notice_dismissal/messages/07' %> @@ -29,37 +25,5 @@ locals: { value: link_codes, content: content } %> <% end %> - - <% if user_signed_in? %> -
- Notice: The newest Notebook.ai release is adding the ability to create your own link - fields, which includes a rather large migration of all existing link fields into a new linking system. - Links that haven't been migrated yet can be seen below this message; links on the new system appear above. -

- Thank you for your patience during this large rewrite! This notice will automatically disappear after the - migration has completed for everyone. -

- — Andrew -
- <% end %> - - <%# TODO: remove these after finishing link migration script %> - <% relations.each do |name, params| %> - <% - results = params[:related_class].where("#{params[:through_relation].downcase}_id": content.id) - .map { |content| content.send(params[:inverse_class].downcase) } - .select { |content| content && content.readable_by?(current_user || User.new) } - %> - <% next unless results.any? %> - -
- <%= params[:relation_text].to_s.titleize.downcase %> of -
- <%= - link_codes = results.map { |page| "#{page.page_type}-#{page.id}" } - render partial: "content/display/attribute_value/link", - locals: { value: link_codes, content: content } - %> - <% end %>
\ No newline at end of file From 06163e41d3d037edc0ebf5e9ca8db87ef95ca955 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 18:54:23 -0700 Subject: [PATCH 10/70] add exact date/time to changelog events --- app/views/content/display/_changelog.html.erb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/views/content/display/_changelog.html.erb b/app/views/content/display/_changelog.html.erb index 396aa2b06..b20af7a89 100644 --- a/app/views/content/display/_changelog.html.erb +++ b/app/views/content/display/_changelog.html.erb @@ -5,7 +5,6 @@ changed_fields = AttributeField.where(id: changed_attributes.pluck(:attribute_field_id)).includes([:attribute_category]) %> -

@@ -72,7 +71,11 @@ <%= link_to(change_event.user.display_name, change_event.user, class: "#{User.text_color}") %> -
<%= time_ago_in_words change_event.created_at %> ago
+
+ <%= time_ago_in_words change_event.created_at %> ago + · + <%= change_event.created_at.strftime('%B %d, %H:%M %Z') %> +

From 9674f597485921d8417811594cd3377ad5636040 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 18:54:37 -0700 Subject: [PATCH 11/70] improve changelog readability on dark mode --- app/views/content/display/_changelog.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/content/display/_changelog.html.erb b/app/views/content/display/_changelog.html.erb index b20af7a89..8f1aeceee 100644 --- a/app/views/content/display/_changelog.html.erb +++ b/app/views/content/display/_changelog.html.erb @@ -78,7 +78,7 @@
-
+
<%= render partial: "content/changelog/field_change/#{related_field.field_type}", locals: { old_value: old_value, new_value: new_value } From 0046af6880ccbb0ead8077e3d3e94fedbadb0323 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 21:23:58 -0700 Subject: [PATCH 12/70] add basic tags view in data vault --- app/assets/javascripts/content.js | 2 + app/controllers/data_controller.rb | 4 + app/views/data/tags.html.erb | 121 +++++++++++++++++++++++++++++ app/views/data/usage.html.erb | 2 +- config/routes.rb | 1 + 5 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 app/views/data/tags.html.erb diff --git a/app/assets/javascripts/content.js b/app/assets/javascripts/content.js index 6eac7528a..a23b7c937 100644 --- a/app/assets/javascripts/content.js +++ b/app/assets/javascripts/content.js @@ -104,6 +104,8 @@ $(document).ready(function () { // Replace this element's content with the name of the page var tag = $(this); + // TODO: we should be caching this to reduce duplicate requests on the same page + $.get( '/api/internal/' + tag.data('klass') + '/' + tag.data('id') + '/name' ).done(function (response) { diff --git a/app/controllers/data_controller.rb b/app/controllers/data_controller.rb index f42eef7e6..b6897575f 100644 --- a/app/controllers/data_controller.rb +++ b/app/controllers/data_controller.rb @@ -115,6 +115,10 @@ def usage @content = current_user.content end + def tags + @tags = current_user.page_tags + end + def discussions @topics = Thredded::Topic.where(user_id: current_user.id) @posts = Thredded::Post.where(user_id: current_user.id) diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb new file mode 100644 index 000000000..f13c631d5 --- /dev/null +++ b/app/views/data/tags.html.erb @@ -0,0 +1,121 @@ +<% Rails.application.config.content_types[:all].each do |content_type| %> + <% + grouped_tags = PageTag.where(page_type: content_type.name, user_id: current_user).group_by(&:tag) + + next if grouped_tags.values.length == 0 + %> + +

<%= content_type.name %> tags

+ <% grouped_tags.each do |tag, page_list| %> +
+
+
+
+
+
+ <%= + link_to send( + "#{content_type.name.downcase.pluralize}_path", + slug: PageTagService.slug_for(tag) + ) do + %> + + <% end %> +
+
+ <% page_list.each do |page_tag| %> +
+ <%= link_to send("#{page_tag.page_type.downcase}_path", page_tag.page_id) do %> + + + <%= content_type.icon %> + + + + <%= "Loading #{content_type.name} name...".html_safe %> + + <% end %> +
+ <% end %> +
+
+ +
+
+
+
+ <% end %> +<% end %> + + +<% @tags.group_by(&:page_type).each do |page_type, tags| %> +
+
+
+
+
<%= page_type %> tags
+ + <% tags.each do |tag| %> +
+
+ <%= + link_to send( + "#{tag.page_type.downcase.pluralize}_path", + slug: tag.slug + ) do + %> + + <% end %> + +
+
+ +
+
+ <% end %> + +
+
+
+
+<% end %> + + +
+
+
+
+
Tags
+
+ <% @tags.group_by(&:page_type).each do |page_type, tags| %> +
+
+ <%= page_type %> Tags +
+
+ +
+ <% tags.each do |tag| %> +
+
+ <%= + link_to send( + "#{tag.page_type.downcase.pluralize}_path", + slug: tag.slug + ) do + %> + + <% end %> +
+
+ +
+
+ <% end %> +
+ <% end %> +
+
+
+
+
\ No newline at end of file diff --git a/app/views/data/usage.html.erb b/app/views/data/usage.html.erb index 0082c62f1..e76979cf4 100644 --- a/app/views/data/usage.html.erb +++ b/app/views/data/usage.html.erb @@ -81,4 +81,4 @@
- \ No newline at end of file + diff --git a/config/routes.rb b/config/routes.rb index 96b6af37e..3a0201218 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -133,6 +133,7 @@ scope '/data' do get '/', to: 'data#index', as: :data_vault get '/usage', to: 'data#usage' + get '/tags', to: 'data#tags' get '/recyclebin', to: 'data#recyclebin' get '/archive', to: 'data#archive' get '/documents', to: 'data#documents', as: :data_documents From 661ef32c055433377c4f2f6b8ee4883c14ddfc4a Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 21:39:13 -0700 Subject: [PATCH 13/70] restyle tags page --- app/views/data/tags.html.erb | 150 ++++++++++------------------------- 1 file changed, 43 insertions(+), 107 deletions(-) diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index f13c631d5..6e399d8be 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -1,121 +1,57 @@ -<% Rails.application.config.content_types[:all].each do |content_type| %> - <% - grouped_tags = PageTag.where(page_type: content_type.name, user_id: current_user).group_by(&:tag) - - next if grouped_tags.values.length == 0 - %> - -

<%= content_type.name %> tags

- <% grouped_tags.each do |tag, page_list| %> -
-
-
-
-
-
- <%= - link_to send( - "#{content_type.name.downcase.pluralize}_path", - slug: PageTagService.slug_for(tag) - ) do - %> - - <% end %> -
-
- <% page_list.each do |page_tag| %> -
- <%= link_to send("#{page_tag.page_type.downcase}_path", page_tag.page_id) do %> - - - <%= content_type.icon %> - - - - <%= "Loading #{content_type.name} name...".html_safe %> - - <% end %> -
- <% end %> -
-
- -
-
+

Your Notebook.ai tags

+
    + <% Rails.application.config.content_types[:all].each do |content_type| %> + <% + grouped_tags = PageTag.where(page_type: content_type.name, user_id: current_user).group_by(&:tag) + + next if grouped_tags.values.length == 0 + %> + +
  • +
    + <%= content_type.icon %> + <%= content_type.name %> tags + <%= grouped_tags.values.length %>
    -
- <% end %> -<% end %> - - -<% @tags.group_by(&:page_type).each do |page_type, tags| %> -
-
-
-
-
<%= page_type %> tags
- - <% tags.each do |tag| %> -
-
+
+ <% grouped_tags.each do |tag, page_list| %> +
+
+
<%= link_to send( - "#{tag.page_type.downcase.pluralize}_path", - slug: tag.slug + "#{content_type.name.downcase.pluralize}_path", + slug: PageTagService.slug_for(tag) ) do %> - + + <%= tag %> + <% end %> -
-
- +
+ Used by <%= pluralize page_list.length, 'page' %>
- <% end %> - -
-
-
-
-<% end %> - - -
-
-
-
-
Tags
-
- <% @tags.group_by(&:page_type).each do |page_type, tags| %> -
-
- <%= page_type %> Tags -
-
-
- <% tags.each do |tag| %> -
-
- <%= - link_to send( - "#{tag.page_type.downcase.pluralize}_path", - slug: tag.slug - ) do - %> - - <% end %> -
-
- -
+ <% page_list.each do |page_tag| %> +
+ <%= link_to send("#{page_tag.page_type.downcase}_path", page_tag.page_id) do %> + + + <%= content_type.icon %> + + + + Loading <%= content_type.name %> name... + + <% end %>
<% end %>
- <% end %> -
+
+ <% end %>
-
-
-
\ No newline at end of file + + <% end %> + \ No newline at end of file From 6092fcc26c2bacce3ab76440518ee4b126b97841 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 22:31:14 -0700 Subject: [PATCH 14/70] add caching to js name lookups --- app/assets/javascripts/content.js | 38 +++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/content.js b/app/assets/javascripts/content.js index a23b7c937..b767b0e2b 100644 --- a/app/assets/javascripts/content.js +++ b/app/assets/javascripts/content.js @@ -104,15 +104,35 @@ $(document).ready(function () { // Replace this element's content with the name of the page var tag = $(this); - // TODO: we should be caching this to reduce duplicate requests on the same page - - $.get( - '/api/internal/' + tag.data('klass') + '/' + tag.data('id') + '/name' - ).done(function (response) { - tag.find('.name-container').text(response); - }).fail(function() { - tag.find('.name-conainer').text("Unknown " + tag.data('klass')); - }); + // Instantiate a cache for all page lookup queries (if not already created) + window.load_page_name_cache ||= {}; + var page_name_key = tag.data('klass') + '/' + tag.data('id'); + + if (page_name_key in window.load_page_name_cache) { + // If we've already made a request for this klass+id, we can just insta-load the + // cached result instead of requesting it again. + tag.find('.name-container').text(window.load_page_name_cache[page_name_key]); + + } else { + // If we haven't made a request for this klass+id, look it up and cache it + $.get( + '/api/internal/' + page_name_key + '/name' + ).done(function (response) { + tag.find('.name-container').text(response); + window.load_page_name_cache[page_name_key] = response; + + // Go ahead and pre-fill all tags on the page for this klass+id, too + $('.js-load-page-name[data-klass=' + tag.data('klass') + '][data-id=' + tag.data('id') + ']') + .find('.name-container') + .text(response); + + }).fail(function() { + tag.find('.name-container').text("Unknown " + tag.data('klass')); + }); + } + + + }); }); From 80cbfd5a47af4c0676f8c1010253cbd04b51dd39 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 22:31:23 -0700 Subject: [PATCH 15/70] space tags out a bit more --- app/views/data/tags.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index 6e399d8be..24eeb289e 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -15,7 +15,7 @@
<% grouped_tags.each do |tag, page_list| %> -
+
<%= From 3475a3b533712fc848aeb06e446fe463445a0d71 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 22:47:22 -0700 Subject: [PATCH 16/70] add page tag controller with remove method --- app/assets/javascripts/page_tags.coffee | 3 +++ app/controllers/page_tags_controller.rb | 4 ++++ app/helpers/page_tags_helper.rb | 2 ++ app/views/data/tags.html.erb | 12 +++++++++++- app/views/page_tags/remove.html.erb | 2 ++ config/routes.rb | 2 ++ test/controllers/page_tags_controller_test.rb | 9 +++++++++ 7 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/page_tags.coffee create mode 100644 app/controllers/page_tags_controller.rb create mode 100644 app/helpers/page_tags_helper.rb create mode 100644 app/views/page_tags/remove.html.erb create mode 100644 test/controllers/page_tags_controller_test.rb diff --git a/app/assets/javascripts/page_tags.coffee b/app/assets/javascripts/page_tags.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/page_tags.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/controllers/page_tags_controller.rb b/app/controllers/page_tags_controller.rb new file mode 100644 index 000000000..883d6b309 --- /dev/null +++ b/app/controllers/page_tags_controller.rb @@ -0,0 +1,4 @@ +class PageTagsController < ApplicationController + def remove + end +end diff --git a/app/helpers/page_tags_helper.rb b/app/helpers/page_tags_helper.rb new file mode 100644 index 000000000..96c4808b4 --- /dev/null +++ b/app/helpers/page_tags_helper.rb @@ -0,0 +1,2 @@ +module PageTagsHelper +end diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index 24eeb289e..255c5758b 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -29,9 +29,19 @@ <% end %>
-
+
Used by <%= pluralize page_list.length, 'page' %>
+
+ <%= + link_to 'Delete this tag', tag_remove_path( + page_type: content_type.name, + slug: PageTagService.slug_for(tag) + ), data: { + confirm: "Are you sure? This will delete this tag and remove it from all pages." + } + %> +
<% page_list.each do |page_tag| %> diff --git a/app/views/page_tags/remove.html.erb b/app/views/page_tags/remove.html.erb new file mode 100644 index 000000000..bad92c4f9 --- /dev/null +++ b/app/views/page_tags/remove.html.erb @@ -0,0 +1,2 @@ +

PageTags#remove

+

Find me in app/views/page_tags/remove.html.erb

diff --git a/config/routes.rb b/config/routes.rb index 3a0201218..992907d2e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -98,6 +98,8 @@ get '/scratchpad', to: 'main#notes', as: :notes + get 'tag/remove' + # Legacy route: left intact so /my/documents/X URLs continue to work for everyone's bookmarks resources :documents diff --git a/test/controllers/page_tags_controller_test.rb b/test/controllers/page_tags_controller_test.rb new file mode 100644 index 000000000..2f89a08aa --- /dev/null +++ b/test/controllers/page_tags_controller_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class PageTagsControllerTest < ActionDispatch::IntegrationTest + test "should get remove" do + get page_tags_remove_url + assert_response :success + end + +end From a5b1faecb63a0b27ceb8fc3e39a8d0662872276e Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 22:56:07 -0700 Subject: [PATCH 17/70] allow deleting tags / removing from all linked pages --- app/controllers/page_tags_controller.rb | 11 +++++++++++ config/routes.rb | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/controllers/page_tags_controller.rb b/app/controllers/page_tags_controller.rb index 883d6b309..0be6008ad 100644 --- a/app/controllers/page_tags_controller.rb +++ b/app/controllers/page_tags_controller.rb @@ -1,4 +1,15 @@ class PageTagsController < ApplicationController def remove + # Params + # {"page_type"=>"Location", "slug"=>"mountains", "controller"=>"page_tags", "action"=>"remove" + return unless params.key?(:page_type) && params.key?(:slug) + + PageTag.where( + page_type: params[:page_type], + slug: params[:slug], + user_id: current_user.id + ).destroy_all + + return redirect_back fallback_location: root_path, notice: 'Tag deleted successfully.' end end diff --git a/config/routes.rb b/config/routes.rb index 992907d2e..7f2963f03 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -98,7 +98,7 @@ get '/scratchpad', to: 'main#notes', as: :notes - get 'tag/remove' + get 'tag/remove', to: 'page_tags#remove' # Legacy route: left intact so /my/documents/X URLs continue to work for everyone's bookmarks resources :documents From c6abc8087990fe2acd242e60a7affa92e49fa818 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 22:59:19 -0700 Subject: [PATCH 18/70] show banner for when no tags are shown --- app/views/data/tags.html.erb | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index 255c5758b..133d5039b 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -1,3 +1,7 @@ +<% + showed_any_tags = false +%> +

Your Notebook.ai tags

    <% Rails.application.config.content_types[:all].each do |content_type| %> @@ -5,6 +9,8 @@ grouped_tags = PageTag.where(page_type: content_type.name, user_id: current_user).group_by(&:tag) next if grouped_tags.values.length == 0 + + showed_any_tags = true %>
  • @@ -39,7 +45,7 @@ slug: PageTagService.slug_for(tag) ), data: { confirm: "Are you sure? This will delete this tag and remove it from all pages." - } + }, class: 'red-text' %>
@@ -64,4 +70,10 @@
<% end %> - \ No newline at end of file + + +<% if !showed_any_tags %> +
+ When you create tags for your pages, they'll appear here. Come back later when you've added some! +
+<% end %> \ No newline at end of file From d81641acc13da26257d84b667a67d304c8001c40 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 23:10:45 -0700 Subject: [PATCH 19/70] add tag management link to data vault --- app/views/data/index.html.erb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/views/data/index.html.erb b/app/views/data/index.html.erb index 5d291ccef..88beecef1 100644 --- a/app/views/data/index.html.erb +++ b/app/views/data/index.html.erb @@ -69,6 +69,20 @@ <% end %>
+
+ <%= link_to tags_path, class: 'black-text' do %> +
+
+ <%= PageTag.icon %> +
Tag management
+

+ Manage the tags you've used for your worldbuilding. +

+
+
+ <% end %> +
+
<%= link_to notebook_export_path, class: 'black-text' do %>
From dd8b0bbe9aa1141e55d4d5e3456fb87198d91b14 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 23:18:37 -0700 Subject: [PATCH 20/70] sort tags alphabetically on tag page --- app/views/data/tags.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index 133d5039b..16dfcac26 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -6,7 +6,7 @@
    <% Rails.application.config.content_types[:all].each do |content_type| %> <% - grouped_tags = PageTag.where(page_type: content_type.name, user_id: current_user).group_by(&:tag) + grouped_tags = PageTag.where(page_type: content_type.name, user_id: current_user).order('tag ASC').group_by(&:tag) next if grouped_tags.values.length == 0 From 822157fc1d8315ceb9978ff25669f25ab8aa27f2 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 23:35:47 -0700 Subject: [PATCH 21/70] remove unused view --- app/views/page_tags/remove.html.erb | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 app/views/page_tags/remove.html.erb diff --git a/app/views/page_tags/remove.html.erb b/app/views/page_tags/remove.html.erb deleted file mode 100644 index bad92c4f9..000000000 --- a/app/views/page_tags/remove.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

    PageTags#remove

    -

    Find me in app/views/page_tags/remove.html.erb

    From 94bfb0f9b0ce99d7a564fe157686a9739950c5f5 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 4 Oct 2021 23:36:04 -0700 Subject: [PATCH 22/70] appease Uglifier for asset compilation --- app/assets/javascripts/content.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/content.js b/app/assets/javascripts/content.js index b767b0e2b..8de06125f 100644 --- a/app/assets/javascripts/content.js +++ b/app/assets/javascripts/content.js @@ -105,7 +105,7 @@ $(document).ready(function () { var tag = $(this); // Instantiate a cache for all page lookup queries (if not already created) - window.load_page_name_cache ||= {}; + window.load_page_name_cache = window.load_page_name_cache || {}; var page_name_key = tag.data('klass') + '/' + tag.data('id'); if (page_name_key in window.load_page_name_cache) { From a243e18317e35eaf82cd068039970dadec7609bc Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 5 Oct 2021 00:22:45 -0700 Subject: [PATCH 23/70] add the ability to remove specific tags from tag management page --- app/controllers/page_tags_controller.rb | 8 ++++++++ app/views/data/tags.html.erb | 3 +++ config/routes.rb | 1 + 3 files changed, 12 insertions(+) diff --git a/app/controllers/page_tags_controller.rb b/app/controllers/page_tags_controller.rb index 0be6008ad..250b2eee2 100644 --- a/app/controllers/page_tags_controller.rb +++ b/app/controllers/page_tags_controller.rb @@ -1,4 +1,5 @@ class PageTagsController < ApplicationController + # Remove a tag and all of its links to a page def remove # Params # {"page_type"=>"Location", "slug"=>"mountains", "controller"=>"page_tags", "action"=>"remove" @@ -12,4 +13,11 @@ def remove return redirect_back fallback_location: root_path, notice: 'Tag deleted successfully.' end + + # Destroy a specific tag by ID + def destroy + PageTag.find_by(id: params[:id], user_id: current_user.id).destroy! + + return redirect_back fallback_location: root_path, notice: 'Tag deleted successfully.' + end end diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index 16dfcac26..4a6b672f7 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -62,6 +62,9 @@ Loading <%= content_type.name %> name... <% end %> + <%= link_to destroy_specific_tag_path(page_tag), method: :delete, class: 'tooltipped', data: { tooltip: 'Remove this tag' } do %> + close + <% end %>
<% end %>
diff --git a/config/routes.rb b/config/routes.rb index 7f2963f03..f23865f27 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -99,6 +99,7 @@ get '/scratchpad', to: 'main#notes', as: :notes get 'tag/remove', to: 'page_tags#remove' + delete 'tag/:id/destroy', to: 'page_tags#destroy', as: :destroy_specific_tag # Legacy route: left intact so /my/documents/X URLs continue to work for everyone's bookmarks resources :documents From 08e6ccc4455a03023654f1e300dc7cfd20c21d9d Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 5 Oct 2021 00:37:18 -0700 Subject: [PATCH 24/70] remote ajax call for removing tags --- app/controllers/page_tags_controller.rb | 4 ++-- app/views/data/tags.html.erb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/page_tags_controller.rb b/app/controllers/page_tags_controller.rb index 250b2eee2..55653d399 100644 --- a/app/controllers/page_tags_controller.rb +++ b/app/controllers/page_tags_controller.rb @@ -11,13 +11,13 @@ def remove user_id: current_user.id ).destroy_all - return redirect_back fallback_location: root_path, notice: 'Tag deleted successfully.' + return redirect_back fallback_location: root_path, notice: 'Tag(s) deleted successfully.' end # Destroy a specific tag by ID def destroy PageTag.find_by(id: params[:id], user_id: current_user.id).destroy! - return redirect_back fallback_location: root_path, notice: 'Tag deleted successfully.' + return redirect_back fallback_location: root_path, notice: 'Tag(s) deleted successfully.' end end diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index 4a6b672f7..e6b434e84 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -62,7 +62,7 @@ Loading <%= content_type.name %> name... <% end %> - <%= link_to destroy_specific_tag_path(page_tag), method: :delete, class: 'tooltipped', data: { tooltip: 'Remove this tag' } do %> + <%= link_to destroy_specific_tag_path(page_tag), method: :delete, class: 'tooltipped', data: { tooltip: 'Remove this tag' }, remote: true do %> close <% end %>
From 32de29cff72596bfdfb08a96e589ccdea7347123 Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 5 Oct 2021 00:48:21 -0700 Subject: [PATCH 25/70] verbiage --- app/views/data/tags.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/data/tags.html.erb b/app/views/data/tags.html.erb index e6b434e84..ee09258f8 100644 --- a/app/views/data/tags.html.erb +++ b/app/views/data/tags.html.erb @@ -62,7 +62,7 @@ Loading <%= content_type.name %> name... <% end %> - <%= link_to destroy_specific_tag_path(page_tag), method: :delete, class: 'tooltipped', data: { tooltip: 'Remove this tag' }, remote: true do %> + <%= link_to destroy_specific_tag_path(page_tag), method: :delete, class: 'tooltipped', data: { tooltip: 'Remove this tag from this page' }, remote: true do %> close <% end %>
From d5589cc2a6b0749009abae5030f82f8035662180 Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 5 Oct 2021 01:28:39 -0700 Subject: [PATCH 26/70] destroy page tags when deleting pages --- app/models/concerns/has_page_tags.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/concerns/has_page_tags.rb b/app/models/concerns/has_page_tags.rb index b1ada5cb0..cfcdb1eb9 100644 --- a/app/models/concerns/has_page_tags.rb +++ b/app/models/concerns/has_page_tags.rb @@ -4,6 +4,6 @@ module HasPageTags extend ActiveSupport::Concern included do - has_many :page_tags, as: :page + has_many :page_tags, as: :page, dependent: :destroy end end From 5c61a3d5eaeea72a5b795d9622fb1ff2fb2a6e27 Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 5 Oct 2021 01:28:53 -0700 Subject: [PATCH 27/70] add rake task for cleaning up orphaned page tags --- lib/tasks/one_off.rake | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/tasks/one_off.rake b/lib/tasks/one_off.rake index fe94a703c..bbd826c4d 100644 --- a/lib/tasks/one_off.rake +++ b/lib/tasks/one_off.rake @@ -1,4 +1,15 @@ namespace :one_off do + desc "Clean up orphaned page tags" + task clean_orphaned_page_tags: :environment do + PageTag.find_each do |page_tag| + referenced_page = page_tag.page + + if page.nil? + page_tag.destroy + end + end + end + desc "Alert users who've saved at least one tree" task trees_notification: :environment do reference_code = 'green-trees' From 118b09febdfebed4b56156832b97d4ac2edc668e Mon Sep 17 00:00:00 2001 From: drusepth Date: Thu, 7 Oct 2021 14:50:11 -0700 Subject: [PATCH 28/70] fix orphan fix --- lib/tasks/one_off.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/one_off.rake b/lib/tasks/one_off.rake index bbd826c4d..aba9f648f 100644 --- a/lib/tasks/one_off.rake +++ b/lib/tasks/one_off.rake @@ -4,7 +4,7 @@ namespace :one_off do PageTag.find_each do |page_tag| referenced_page = page_tag.page - if page.nil? + if referenced_page.nil? page_tag.destroy end end From c312d439994bae70f605d3c9af1f67d40a90a195 Mon Sep 17 00:00:00 2001 From: drusepth Date: Thu, 7 Oct 2021 15:57:16 -0700 Subject: [PATCH 29/70] add cached word count to attributes, backfill task --- app/jobs/cache_attribute_word_count_job.rb | 30 +++++++++++++++++++ app/models/page_data/attribute.rb | 4 +++ ...5520_add_word_count_cache_to_attributes.rb | 5 ++++ db/schema.rb | 3 +- lib/tasks/backfill.rake | 24 +++++++++++++++ 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 app/jobs/cache_attribute_word_count_job.rb create mode 100644 db/migrate/20211007215520_add_word_count_cache_to_attributes.rb diff --git a/app/jobs/cache_attribute_word_count_job.rb b/app/jobs/cache_attribute_word_count_job.rb new file mode 100644 index 000000000..fd1238dc2 --- /dev/null +++ b/app/jobs/cache_attribute_word_count_job.rb @@ -0,0 +1,30 @@ +class CacheAttributeWordCountJob < ApplicationJob + queue_as :cache + + def perform(*args) + attribute_id = args.shift + attribute = Attribute.find_by(id: attribute_id) + + return if attribute.nil? + return if attribute.value.nil? || attribute.value.blank? + + word_count = WordCountAnalyzer::Counter.new( + ellipsis: 'no_special_treatment', + hyperlink: 'count_as_one', + contraction: 'count_as_one', + hyphenated_word: 'count_as_one', + date: 'no_special_treatment', + number: 'count', + numbered_list: 'ignore', + xhtml: 'remove', + forward_slash: 'count_as_multiple_except_dates', + backslash: 'count_as_one', + dotted_line: 'ignore', + dashed_line: 'ignore', + underscore: 'ignore', + stray_punctuation: 'ignore' + ).count(attribute.value) + + attribute.update!(word_count_cache: word_count) + end +end diff --git a/app/models/page_data/attribute.rb b/app/models/page_data/attribute.rb index cdd17cb15..53bf61820 100644 --- a/app/models/page_data/attribute.rb +++ b/app/models/page_data/attribute.rb @@ -19,6 +19,10 @@ class Attribute < ApplicationRecord end end + after_commit do + CacheAttributeWordCountJob.perform_later(self.id) if saved_changes.key?('value') + end + after_save do entity.touch end diff --git a/db/migrate/20211007215520_add_word_count_cache_to_attributes.rb b/db/migrate/20211007215520_add_word_count_cache_to_attributes.rb new file mode 100644 index 000000000..f72faabd1 --- /dev/null +++ b/db/migrate/20211007215520_add_word_count_cache_to_attributes.rb @@ -0,0 +1,5 @@ +class AddWordCountCacheToAttributes < ActiveRecord::Migration[6.0] + def change + add_column :attributes, :word_count_cache, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 91d7d384a..6f3257521 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_09_15_030031) do +ActiveRecord::Schema.define(version: 2021_10_07_215520) do create_table "active_storage_attachments", force: :cascade do |t| t.string "name", null: false @@ -165,6 +165,7 @@ t.datetime "created_at" t.datetime "updated_at" t.datetime "deleted_at" + t.integer "word_count_cache" t.index ["attribute_field_id", "deleted_at", "entity_id", "entity_type"], name: "attributes_afi_deleted_at_entity_id_entity_type" t.index ["attribute_field_id", "deleted_at"], name: "index_attributes_on_attribute_field_id_and_deleted_at" t.index ["attribute_field_id", "user_id", "entity_type", "entity_id", "deleted_at"], name: "attributes_afi_ui_et_ei_da" diff --git a/lib/tasks/backfill.rake b/lib/tasks/backfill.rake index 713ded001..4f27e383e 100644 --- a/lib/tasks/backfill.rake +++ b/lib/tasks/backfill.rake @@ -1,4 +1,28 @@ namespace :backfill do + desc "Backfill cached word counts on all attributes" + task attribute_word_count_caches: :environment do + Attribute.where(cached_word_count: nil).find_each do |attribute| + word_count = WordCountAnalyzer::Counter.new( + ellipsis: 'no_special_treatment', + hyperlink: 'count_as_one', + contraction: 'count_as_one', + hyphenated_word: 'count_as_one', + date: 'no_special_treatment', + number: 'count', + numbered_list: 'ignore', + xhtml: 'remove', + forward_slash: 'count_as_multiple_except_dates', + backslash: 'count_as_one', + dotted_line: 'ignore', + dashed_line: 'ignore', + underscore: 'ignore', + stray_punctuation: 'ignore' + ).count(attribute.value) + + attribute.update_column(:word_count_cache, word_count) + end + end + desc "Backfill cached word counts on all documents" task document_word_count_caches: :environment do Document.where(cached_word_count: nil).where.not(body: [nil, ""]).find_each(batch_size: 500) do |document| From 3e0d2210c2b1fbec8c61142580a32a9b513bc05f Mon Sep 17 00:00:00 2001 From: drusepth Date: Thu, 7 Oct 2021 17:03:44 -0700 Subject: [PATCH 30/70] cache aggregated word counts on worldbuilding pages --- .../cache_sum_attribute_word_count_job.rb | 19 +++++++++++++++++++ app/models/concerns/is_content_page.rb | 5 +++++ app/models/page_data/attribute.rb | 8 +++++++- app/models/word_count_update.rb | 4 ++++ ...0211007234707_create_word_count_updates.rb | 12 ++++++++++++ db/schema.rb | 15 ++++++++++++++- lib/tasks/backfill.rake | 2 +- test/fixtures/word_count_updates.yml | 15 +++++++++++++++ test/models/word_count_update_test.rb | 7 +++++++ 9 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 app/jobs/cache_sum_attribute_word_count_job.rb create mode 100644 app/models/word_count_update.rb create mode 100644 db/migrate/20211007234707_create_word_count_updates.rb create mode 100644 test/fixtures/word_count_updates.yml create mode 100644 test/models/word_count_update_test.rb diff --git a/app/jobs/cache_sum_attribute_word_count_job.rb b/app/jobs/cache_sum_attribute_word_count_job.rb new file mode 100644 index 000000000..e8d8ebd47 --- /dev/null +++ b/app/jobs/cache_sum_attribute_word_count_job.rb @@ -0,0 +1,19 @@ +class CacheSumAttributeWordCountJob < ApplicationJob + queue_as :cache + + def perform(*args) + entity_type = args.shift + entity_id = args.shift + + entity = entity_type.constantize.find_by(id: entity_id) + sum_attribute_word_count = Attribute.where(entity_type: entity_type, entity_id: entity_id).sum(:word_count_cache) + + update = entity.word_count_updates.find_or_initialize_by( + for_date: DateTime.current, + ) + update.word_count = sum_attribute_word_count + update.user_id ||= entity.user_id + + update.save! + end +end diff --git a/app/models/concerns/is_content_page.rb b/app/models/concerns/is_content_page.rb index ad0b69fd3..718797a40 100644 --- a/app/models/concerns/is_content_page.rb +++ b/app/models/concerns/is_content_page.rb @@ -18,6 +18,11 @@ module IsContentPage has_many :timeline_events, through: :timeline_event_entities has_many :timelines, -> { distinct }, through: :timeline_events + has_many :word_count_updates, as: :entity, dependent: :destroy + def latest_word_count_cache + word_count_updates.order('for_date DESC').limit(1).first.try(:word_count) || 0 + end + scope :unarchived, -> { where(archived_at: nil) } def archive! update!(archived_at: DateTime.now) diff --git a/app/models/page_data/attribute.rb b/app/models/page_data/attribute.rb index 53bf61820..a08f3cc22 100644 --- a/app/models/page_data/attribute.rb +++ b/app/models/page_data/attribute.rb @@ -20,7 +20,13 @@ class Attribute < ApplicationRecord end after_commit do - CacheAttributeWordCountJob.perform_later(self.id) if saved_changes.key?('value') + if saved_changes.key?('value') + # Cache the updated word count on this attribute + CacheAttributeWordCountJob.perform_later(self.id) + + # Cache the updated word count on the page this attribute belongs to + CacheSumAttributeWordCountJob.perform_later(self.entity_type, self.entity_id) + end end after_save do diff --git a/app/models/word_count_update.rb b/app/models/word_count_update.rb new file mode 100644 index 000000000..1f26dccce --- /dev/null +++ b/app/models/word_count_update.rb @@ -0,0 +1,4 @@ +class WordCountUpdate < ApplicationRecord + belongs_to :user + belongs_to :entity, polymorphic: true +end diff --git a/db/migrate/20211007234707_create_word_count_updates.rb b/db/migrate/20211007234707_create_word_count_updates.rb new file mode 100644 index 000000000..2d1b84ee3 --- /dev/null +++ b/db/migrate/20211007234707_create_word_count_updates.rb @@ -0,0 +1,12 @@ +class CreateWordCountUpdates < ActiveRecord::Migration[6.0] + def change + create_table :word_count_updates do |t| + t.references :user, null: false, foreign_key: true + t.references :entity, polymorphic: true, null: false + t.integer :word_count + t.date :for_date + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 6f3257521..f74e15260 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_10_07_215520) do +ActiveRecord::Schema.define(version: 2021_10_07_234707) do create_table "active_storage_attachments", force: :cascade do |t| t.string "name", null: false @@ -3637,6 +3637,18 @@ t.integer "habitat_id" end + create_table "word_count_updates", force: :cascade do |t| + t.integer "user_id", null: false + t.string "entity_type", null: false + t.integer "entity_id", null: false + t.integer "word_count" + t.date "for_date" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["entity_type", "entity_id"], name: "index_word_count_updates_on_entity_type_and_entity_id" + t.index ["user_id"], name: "index_word_count_updates_on_user_id" + end + add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id" add_foreign_key "api_keys", "users" add_foreign_key "api_requests", "application_integrations" @@ -4048,4 +4060,5 @@ add_foreign_key "vehicles", "users" add_foreign_key "votes", "users" add_foreign_key "votes", "votables" + add_foreign_key "word_count_updates", "users" end diff --git a/lib/tasks/backfill.rake b/lib/tasks/backfill.rake index 4f27e383e..f2ed3945a 100644 --- a/lib/tasks/backfill.rake +++ b/lib/tasks/backfill.rake @@ -1,7 +1,7 @@ namespace :backfill do desc "Backfill cached word counts on all attributes" task attribute_word_count_caches: :environment do - Attribute.where(cached_word_count: nil).find_each do |attribute| + Attribute.where(word_count_cache: nil).where.not(value: ["", " ", ".", nil]).find_each do |attribute| word_count = WordCountAnalyzer::Counter.new( ellipsis: 'no_special_treatment', hyperlink: 'count_as_one', diff --git a/test/fixtures/word_count_updates.yml b/test/fixtures/word_count_updates.yml new file mode 100644 index 000000000..172493ff6 --- /dev/null +++ b/test/fixtures/word_count_updates.yml @@ -0,0 +1,15 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + user: one + entity: one + entity_type: Entity + word_count: 1 + for_date: 2021-10-07 + +two: + user: two + entity: two + entity_type: Entity + word_count: 1 + for_date: 2021-10-07 diff --git a/test/models/word_count_update_test.rb b/test/models/word_count_update_test.rb new file mode 100644 index 000000000..9f0e4d0bf --- /dev/null +++ b/test/models/word_count_update_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class WordCountUpdateTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end From b087c42e57b1338a99e1c4e1c5bd7a343f8a8f57 Mon Sep 17 00:00:00 2001 From: drusepth Date: Thu, 7 Oct 2021 18:38:32 -0700 Subject: [PATCH 31/70] don't error (and therefore retry) if someone deletes a doc getting rev-saved --- app/jobs/save_document_revision_job.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/jobs/save_document_revision_job.rb b/app/jobs/save_document_revision_job.rb index d52d737fc..d88ba876c 100644 --- a/app/jobs/save_document_revision_job.rb +++ b/app/jobs/save_document_revision_job.rb @@ -4,8 +4,8 @@ class SaveDocumentRevisionJob < ApplicationJob def perform(*args) document_id = args.shift - document = Document.find(document_id) - return unless document.present? + document = Document.find_by(id: document_id) + return unless document # Update cached word count for the document regardless of how often this is called new_word_count = document.computed_word_count From 72049a1fc82c3cbe3897f4d604e606f69ba84e6d Mon Sep 17 00:00:00 2001 From: drusepth Date: Thu, 7 Oct 2021 18:46:40 -0700 Subject: [PATCH 32/70] save document word count updates, too --- app/jobs/save_document_revision_job.rb | 8 ++++++++ app/models/documents/document.rb | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/app/jobs/save_document_revision_job.rb b/app/jobs/save_document_revision_job.rb index d88ba876c..95fc41016 100644 --- a/app/jobs/save_document_revision_job.rb +++ b/app/jobs/save_document_revision_job.rb @@ -11,6 +11,14 @@ def perform(*args) new_word_count = document.computed_word_count document.update(cached_word_count: new_word_count) + # Save a WordCountUpdate for this document for today + update = document.word_count_updates.find_or_initialize_by( + for_date: DateTime.current, + ) + update.word_count = new_word_count + update.user_id ||= document.user_id + update.save! + # Make sure we're only storing revisions at least every 5 min latest_revision = document.document_revisions.order('created_at DESC').limit(1).first if latest_revision.present? && latest_revision.created_at > 5.minutes.ago diff --git a/app/models/documents/document.rb b/app/models/documents/document.rb index a28e3eb89..cbbd10279 100644 --- a/app/models/documents/document.rb +++ b/app/models/documents/document.rb @@ -26,6 +26,12 @@ class Document < ApplicationRecord attr_accessor :tagged_text + # Duplicated from is_content_page since we don't include that here yet + has_many :word_count_updates, as: :entity, dependent: :destroy + def latest_word_count_cache + word_count_updates.order('for_date DESC').limit(1).first.try(:word_count) || 0 + end + KEYS_TO_TRIGGER_REVISION_ON_CHANGE = %w(title body synopsis notes_text) def self.color From 1d0c609cb07a32357d51f07f5887c97ee9d3058b Mon Sep 17 00:00:00 2001 From: drusepth Date: Sat, 9 Oct 2021 22:46:10 -0700 Subject: [PATCH 33/70] include the current user's shared universes in contributable universes cache --- app/models/users/user.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/models/users/user.rb b/app/models/users/user.rb index 9c7583af6..9b761fc82 100644 --- a/app/models/users/user.rb +++ b/app/models/users/user.rb @@ -122,6 +122,9 @@ def contributable_universes def contributable_universe_ids # TODO: email confirmation needs to happen for data safety / privacy (only verified emails) @contributable_universe_ids ||= Contributor.where('email = ? OR user_id = ?', self.email, self.id).pluck(:universe_id) + @contributable_universe_ids += Contributor.where(universe_id: my_universe_ids).pluck(:universe_id) + + @contributable_universe_ids.uniq end # TODO: rename this to #{content_type}_shared_with_me From 083c64a06e6f0efedfacd8263f87d9286814aedd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Oct 2021 12:00:47 +0000 Subject: [PATCH 34/70] Bump redis from 4.4.0 to 4.5.1 Bumps [redis](https://github.com/redis/redis-rb) from 4.4.0 to 4.5.1. - [Release notes](https://github.com/redis/redis-rb/releases) - [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md) - [Commits](https://github.com/redis/redis-rb/compare/v4.4.0...v4.5.1) --- updated-dependencies: - dependency-name: redis dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ff4e7ef56..9b659bf69 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1526,7 +1526,7 @@ GEM railties (>= 3.2) tilt redcarpet (3.5.1) - redis (4.4.0) + redis (4.5.1) remotipart (1.4.4) responders (3.0.1) actionpack (>= 5.0) From 877990bc15eebad6a6ac757845a5d11c628b3bbf Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 25 Oct 2021 21:05:40 -0700 Subject: [PATCH 35/70] pull in thredded 6.1 support --- Gemfile.lock | 174 +++++++++++++++++++++++++-------------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ff4e7ef56..d29d4ec14 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -13,13 +13,13 @@ GIT GIT remote: https://github.com/indentlabs/thredded.git - revision: b9a3976e310bb4eeb3f9a4b30d6c176d15a28ce1 + revision: 6ed40273e4696fc4f32013e4f2a101ff8658b960 branch: feature/report-posts specs: thredded (0.16.16) active_record_union (>= 1.3.0) autoprefixer-rails - db_text_search (~> 0.3.0) + db_text_search (~> 0.3.2) friendly_id html-pipeline htmlentities @@ -28,10 +28,10 @@ GIT kramdown (>= 2.0.0) kramdown-parser-gfm nokogiri - onebox (~> 1.8, >= 1.8.99) + onebox (>= 1.8.99) pundit (>= 1.1.0) rails (>= 4.2.10, != 6.0.0.rc2) - rb-gravatar + rails_gravatar rinku sanitize sassc-rails (>= 2.0.0) @@ -41,38 +41,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.0.3.4) - actionpack (= 6.0.3.4) + actioncable (6.1.4.1) + actionpack (= 6.1.4.1) + activesupport (= 6.1.4.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.0.3.4) - actionpack (= 6.0.3.4) - activejob (= 6.0.3.4) - activerecord (= 6.0.3.4) - activestorage (= 6.0.3.4) - activesupport (= 6.0.3.4) + actionmailbox (6.1.4.1) + actionpack (= 6.1.4.1) + activejob (= 6.1.4.1) + activerecord (= 6.1.4.1) + activestorage (= 6.1.4.1) + activesupport (= 6.1.4.1) mail (>= 2.7.1) - actionmailer (6.0.3.4) - actionpack (= 6.0.3.4) - actionview (= 6.0.3.4) - activejob (= 6.0.3.4) + actionmailer (6.1.4.1) + actionpack (= 6.1.4.1) + actionview (= 6.1.4.1) + activejob (= 6.1.4.1) + activesupport (= 6.1.4.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.0.3.4) - actionview (= 6.0.3.4) - activesupport (= 6.0.3.4) - rack (~> 2.0, >= 2.0.8) + actionpack (6.1.4.1) + actionview (= 6.1.4.1) + activesupport (= 6.1.4.1) + rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.0.3.4) - actionpack (= 6.0.3.4) - activerecord (= 6.0.3.4) - activestorage (= 6.0.3.4) - activesupport (= 6.0.3.4) + actiontext (6.1.4.1) + actionpack (= 6.1.4.1) + activerecord (= 6.1.4.1) + activestorage (= 6.1.4.1) + activesupport (= 6.1.4.1) nokogiri (>= 1.8.5) - actionview (6.0.3.4) - activesupport (= 6.0.3.4) + actionview (6.1.4.1) + activesupport (= 6.1.4.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -81,37 +83,39 @@ GEM activerecord (>= 4.0) active_storage_validations (0.9.5) rails (>= 5.2.0) - activejob (6.0.3.4) - activesupport (= 6.0.3.4) + activejob (6.1.4.1) + activesupport (= 6.1.4.1) globalid (>= 0.3.6) - activemodel (6.0.3.4) - activesupport (= 6.0.3.4) + activemodel (6.1.4.1) + activesupport (= 6.1.4.1) activemodel-serializers-xml (1.0.2) activemodel (> 5.x) activesupport (> 5.x) builder (~> 3.1) - activerecord (6.0.3.4) - activemodel (= 6.0.3.4) - activesupport (= 6.0.3.4) - activestorage (6.0.3.4) - actionpack (= 6.0.3.4) - activejob (= 6.0.3.4) - activerecord (= 6.0.3.4) - marcel (~> 0.3.1) - activesupport (6.0.3.4) + activerecord (6.1.4.1) + activemodel (= 6.1.4.1) + activesupport (= 6.1.4.1) + activestorage (6.1.4.1) + actionpack (= 6.1.4.1) + activejob (= 6.1.4.1) + activerecord (= 6.1.4.1) + activesupport (= 6.1.4.1) + marcel (~> 1.0.0) + mini_mime (>= 1.1.0) + activesupport (6.1.4.1) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) acts_as_list (1.0.4) activerecord (>= 4.2) - addressable (2.7.0) + addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) authority (3.3.0) activesupport (>= 3.0.0) - autoprefixer-rails (9.8.4) - execjs + autoprefixer-rails (10.3.3.0) + execjs (~> 2) aws-eventstream (1.2.0) aws-partitions (1.503.0) aws-sdk (3.1.0) @@ -1288,7 +1292,7 @@ GEM database_cleaner-core (2.0.1) dateslices (0.0.4) rails (> 4) - db_text_search (0.3.1) + db_text_search (0.3.2) activerecord (>= 4.1.15, < 7.0) debug_inspector (1.0.0) devise (4.8.0) @@ -1303,7 +1307,7 @@ GEM engtagger (0.2.1) erubi (1.10.0) eventmachine (1.2.7) - execjs (2.7.0) + execjs (2.8.1) faraday (0.17.3) multipart-post (>= 1.2, < 3) faraday_middleware (0.14.0) @@ -1319,7 +1323,7 @@ GEM flamegraph (0.9.5) font-awesome-rails (4.7.0.7) railties (>= 3.2, < 7) - friendly_id (5.3.0) + friendly_id (5.4.2) activerecord (>= 4.0.0) globalid (0.5.2) activesupport (>= 5.0) @@ -1356,7 +1360,7 @@ GEM image_processing (1.12.1) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) - inline_svg (1.7.1) + inline_svg (1.7.2) activesupport (>= 3.0) nokogiri (>= 1.6) jmespath (1.4.0) @@ -1394,8 +1398,7 @@ GEM nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) - marcel (0.3.3) - mimemagic (~> 0.3.2) + marcel (1.0.2) material_icons (2.2.1) railties (>= 3.2) medium-editor-rails (2.3.1) @@ -1411,7 +1414,7 @@ GEM nokogiri (~> 1) rake mini_magick (4.11.0) - mini_mime (1.1.0) + mini_mime (1.1.2) mini_portile2 (2.6.1) mini_racer (0.4.0) libv8-node (~> 15.14.0.0) @@ -1425,10 +1428,8 @@ GEM nokogiri (1.12.5) mini_portile2 (~> 2.6.1) racc (~> 1.4) - nokogumbo (2.0.2) - nokogiri (~> 1.8, >= 1.8.4) - onebox (1.9.29) - addressable (~> 2.7.0) + onebox (2.2.19) + addressable (~> 2.8.0) htmlentities (~> 4.3) multi_json (~> 1.11) mustache @@ -1459,9 +1460,9 @@ GEM nio4r (~> 2.0) puma-heroku (2.0.0) puma (>= 5.0, < 6.0) - pundit (2.1.0) + pundit (2.1.1) activesupport (>= 3.0.0) - racc (1.5.2) + racc (1.6.0) rack (2.2.3) rack-mini-profiler (2.3.3) rack (>= 1.2.0) @@ -1472,20 +1473,20 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.0.3.4) - actioncable (= 6.0.3.4) - actionmailbox (= 6.0.3.4) - actionmailer (= 6.0.3.4) - actionpack (= 6.0.3.4) - actiontext (= 6.0.3.4) - actionview (= 6.0.3.4) - activejob (= 6.0.3.4) - activemodel (= 6.0.3.4) - activerecord (= 6.0.3.4) - activestorage (= 6.0.3.4) - activesupport (= 6.0.3.4) - bundler (>= 1.3.0) - railties (= 6.0.3.4) + rails (6.1.4.1) + actioncable (= 6.1.4.1) + actionmailbox (= 6.1.4.1) + actionmailer (= 6.1.4.1) + actionpack (= 6.1.4.1) + actiontext (= 6.1.4.1) + actionview (= 6.1.4.1) + activejob (= 6.1.4.1) + activemodel (= 6.1.4.1) + activerecord (= 6.1.4.1) + activestorage (= 6.1.4.1) + activesupport (= 6.1.4.1) + bundler (>= 1.15.0) + railties (= 6.1.4.1) sprockets-rails (>= 2.0.0) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) @@ -1508,15 +1509,16 @@ GEM rails (>= 5.0, < 7) remotipart (~> 1.3) sassc-rails (>= 1.3, < 3) - railties (6.0.3.4) - actionpack (= 6.0.3.4) - activesupport (= 6.0.3.4) + rails_gravatar (1.0.4) + actionview + railties (6.1.4.1) + actionpack (= 6.1.4.1) + activesupport (= 6.1.4.1) method_source - rake (>= 0.8.7) - thor (>= 0.20.3, < 2.0) + rake (>= 0.13) + thor (~> 1.0) rake (13.0.6) rb-fsevent (0.11.0) - rb-gravatar (1.0.5) rb-inotify (0.10.1) ffi (~> 1.0) react-rails (2.6.1) @@ -1537,10 +1539,9 @@ GEM ruby-vips (2.0.17) ffi (~> 1.9) rubyzip (2.0.0) - sanitize (5.2.1) + sanitize (6.0.0) crass (~> 1.0.2) - nokogiri (>= 1.8.0) - nokogumbo (~> 2.0) + nokogiri (>= 1.12.0) sass-rails (6.0.0) sassc-rails (~> 2.1, >= 2.1.1) sassc (2.4.0) @@ -1590,12 +1591,11 @@ GEM textstat (0.1.6) text-hyphen (~> 1.4, >= 1.4.1) thor (1.1.0) - thread_safe (0.3.6) tilt (2.0.10) timeago_js (3.0.2.2) tribute (3.6.0.0) - tzinfo (1.2.9) - thread_safe (~> 0.1) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) uglifier (4.2.0) execjs (>= 0.3.0, < 3) unf (0.1.4) @@ -1619,7 +1619,7 @@ GEM websocket-extensions (0.1.5) word_count_analyzer (1.0.1) engtagger - zeitwerk (2.4.2) + zeitwerk (2.5.1) PLATFORMS ruby From af9b47839ef26a6ebc4eb3386017c19a9759ce71 Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 25 Oct 2021 21:06:07 -0700 Subject: [PATCH 36/70] safety on job --- app/jobs/cache_sum_attribute_word_count_job.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/jobs/cache_sum_attribute_word_count_job.rb b/app/jobs/cache_sum_attribute_word_count_job.rb index e8d8ebd47..63dad69aa 100644 --- a/app/jobs/cache_sum_attribute_word_count_job.rb +++ b/app/jobs/cache_sum_attribute_word_count_job.rb @@ -6,8 +6,9 @@ def perform(*args) entity_id = args.shift entity = entity_type.constantize.find_by(id: entity_id) - sum_attribute_word_count = Attribute.where(entity_type: entity_type, entity_id: entity_id).sum(:word_count_cache) + return if entity.nil? + sum_attribute_word_count = Attribute.where(entity_type: entity_type, entity_id: entity_id).sum(:word_count_cache) update = entity.word_count_updates.find_or_initialize_by( for_date: DateTime.current, ) From 89cf300b51debec7d9e9c010f9a22551c8f9660b Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 25 Oct 2021 21:06:19 -0700 Subject: [PATCH 37/70] add helpful cache rake task --- lib/tasks/backfill.rake | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib/tasks/backfill.rake b/lib/tasks/backfill.rake index f2ed3945a..bd36c8ed0 100644 --- a/lib/tasks/backfill.rake +++ b/lib/tasks/backfill.rake @@ -23,6 +23,36 @@ namespace :backfill do end end + task :most_used_attribute_word_counts: :environment do + word_counts = {} + Attribute.where(word_count_cache: nil).group(:value).order('count_id DESC').limit(500).count(:id).each do |value, count| + word_count = WordCountAnalyzer::Counter.new( + ellipsis: 'no_special_treatment', + hyperlink: 'count_as_one', + contraction: 'count_as_one', + hyphenated_word: 'count_as_one', + date: 'no_special_treatment', + number: 'count', + numbered_list: 'ignore', + xhtml: 'remove', + forward_slash: 'count_as_multiple_except_dates', + backslash: 'count_as_one', + dotted_line: 'ignore', + dashed_line: 'ignore', + underscore: 'ignore', + stray_punctuation: 'ignore' + ).count(value) + + word_counts[word_count] ||= [] + word_counts[word_count].push value + puts "#{value} x #{count}: #{word_count} words" + end + + word_counts.each do |count, values| + Attribute.where(word_count_cache: nil, value: values).update_all(word_count_cache: count) + end + end + desc "Backfill cached word counts on all documents" task document_word_count_caches: :environment do Document.where(cached_word_count: nil).where.not(body: [nil, ""]).find_each(batch_size: 500) do |document| From d0ccf2b1c1c444742fd8f53023b65e433e9aa0ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Oct 2021 04:10:23 +0000 Subject: [PATCH 38/70] Bump puma from 5.5.0 to 5.5.2 Bumps [puma](https://github.com/puma/puma) from 5.5.0 to 5.5.2. - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/master/History.md) - [Commits](https://github.com/puma/puma/compare/v5.5.0...v5.5.2) --- updated-dependencies: - dependency-name: puma dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d29d4ec14..c02a85524 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1456,7 +1456,7 @@ GEM coderay (~> 1.1) method_source (~> 1.0) public_suffix (4.0.6) - puma (5.5.0) + puma (5.5.1) nio4r (~> 2.0) puma-heroku (2.0.0) puma (>= 5.0, < 6.0) From 3ec0f77fad84e2cf4d827546f477e93806e01d82 Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 26 Oct 2021 10:21:55 -0700 Subject: [PATCH 39/70] typo --- lib/tasks/backfill.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/backfill.rake b/lib/tasks/backfill.rake index bd36c8ed0..d8db6a3eb 100644 --- a/lib/tasks/backfill.rake +++ b/lib/tasks/backfill.rake @@ -23,7 +23,7 @@ namespace :backfill do end end - task :most_used_attribute_word_counts: :environment do + task most_used_attribute_word_counts: :environment do word_counts = {} Attribute.where(word_count_cache: nil).group(:value).order('count_id DESC').limit(500).count(:id).each do |value, count| word_count = WordCountAnalyzer::Counter.new( From ac4d98a8bc9092709c99dc1eea725ba8e007e4f0 Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 26 Oct 2021 10:22:11 -0700 Subject: [PATCH 40/70] typo --- lib/tasks/backfill.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/backfill.rake b/lib/tasks/backfill.rake index bd36c8ed0..d8db6a3eb 100644 --- a/lib/tasks/backfill.rake +++ b/lib/tasks/backfill.rake @@ -23,7 +23,7 @@ namespace :backfill do end end - task :most_used_attribute_word_counts: :environment do + task most_used_attribute_word_counts: :environment do word_counts = {} Attribute.where(word_count_cache: nil).group(:value).order('count_id DESC').limit(500).count(:id).each do |value, count| word_count = WordCountAnalyzer::Counter.new( From c111e9ec5d42533c35fd166086dfcd0ba79416ca Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 26 Oct 2021 23:34:35 -0700 Subject: [PATCH 41/70] Gravatar fix --- app/views/layouts/forum.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/forum.html.erb b/app/views/layouts/forum.html.erb index 1375a61aa..2901e560d 100644 --- a/app/views/layouts/forum.html.erb +++ b/app/views/layouts/forum.html.erb @@ -10,7 +10,7 @@ <%= javascript_include_tag 'thredded', async: !Rails.application.config.assets.debug, defer: true %> - <%== Gravatar.prefetch_dns %> + <%== RailsGravatar.prefetch_dns_tag %> <%= render 'layouts/sidenav' if user_signed_in? %> From 4a57426b8e061f9a78eb3e74fe9e98af0beb4768 Mon Sep 17 00:00:00 2001 From: drusepth Date: Wed, 27 Oct 2021 00:01:05 -0700 Subject: [PATCH 42/70] resolve 6.1 migration issues --- db/schema.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index 9c3dd9775..187d87ad5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_10_07_234707) do +ActiveRecord::Schema.define(version: 2021_10_27_065954) do create_table "active_storage_attachments", force: :cascade do |t| t.string "name", null: false From 69386315245bf4e9b7e1452a4f8d5dee709dcf27 Mon Sep 17 00:00:00 2001 From: drusepth Date: Wed, 27 Oct 2021 00:12:06 -0700 Subject: [PATCH 43/70] I... forgot the migration --- ...27065954_add_service_name_migration_again.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 db/migrate/20211027065954_add_service_name_migration_again.rb diff --git a/db/migrate/20211027065954_add_service_name_migration_again.rb b/db/migrate/20211027065954_add_service_name_migration_again.rb new file mode 100644 index 000000000..e352ceb9c --- /dev/null +++ b/db/migrate/20211027065954_add_service_name_migration_again.rb @@ -0,0 +1,17 @@ +class AddServiceNameMigrationAgain < ActiveRecord::Migration[6.1] + def up + unless column_exists?(:active_storage_blobs, :service_name) + add_column :active_storage_blobs, :service_name, :string + + if configured_service = ActiveStorage::Blob.service.name + ActiveStorage::Blob.unscoped.update_all(service_name: configured_service) + end + + change_column :active_storage_blobs, :service_name, :string, null: false + end + end + + def down + remove_column :active_storage_blobs, :service_name + end +end From 84ab204c801d02fd3cf0c32750ac8f19ad919265 Mon Sep 17 00:00:00 2001 From: drusepth Date: Wed, 10 Nov 2021 21:55:42 -0800 Subject: [PATCH 44/70] skip favorite_control queries --- app/views/content/display/_favorite_control.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/content/display/_favorite_control.html.erb b/app/views/content/display/_favorite_control.html.erb index d7c727b3c..9f14be783 100644 --- a/app/views/content/display/_favorite_control.html.erb +++ b/app/views/content/display/_favorite_control.html.erb @@ -8,7 +8,7 @@ end %> -<% if content.persisted? && user_signed_in? && content.user == current_user %> +<% if content.persisted? && user_signed_in? && content.user_id == current_user.try(:id) %> Date: Thu, 11 Nov 2021 00:04:24 -0800 Subject: [PATCH 45/70] cache image uploads to avoid n+1 query on content#index pages --- app/controllers/content_controller.rb | 5 +++++ app/views/content/list/_cards.html.erb | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/controllers/content_controller.rb b/app/controllers/content_controller.rb index 9b99761cb..4eea63bc8 100644 --- a/app/controllers/content_controller.rb +++ b/app/controllers/content_controller.rb @@ -55,6 +55,11 @@ def index @questioned_content = @content.sample @attribute_field_to_question = SerendipitousService.question_for(@questioned_content) + @random_image_including_private_pool_cache = ImageUpload.where( + content_type: @content_type_class.name, + content_id: @content.pluck(:id) + ).group_by { |image| [image.content_type, image.content_id] } + # Uh, do we ever actually make JSON requests to logged-in user pages? respond_to do |format| format.html { render 'content/index' } diff --git a/app/views/content/list/_cards.html.erb b/app/views/content/list/_cards.html.erb index f0e048165..d447532e4 100644 --- a/app/views/content/list/_cards.html.erb +++ b/app/views/content/list/_cards.html.erb @@ -1,10 +1,15 @@
<% content_list.each.with_index do |content, i| %> + <% + content_image = @random_image_including_private_pool_cache[[content.page_type, content.id]] + .sample + .try(:src, :medium) || asset_path("card-headers/#{content.page_type.downcase.pluralize}.jpg") + %>
<%= render partial: 'content/display/favorite_control', locals: { content: content } %> -
+
From 8cd54092cea8ee963f24a240411eddce148ee955 Mon Sep 17 00:00:00 2001 From: drusepth Date: Thu, 11 Nov 2021 00:19:36 -0800 Subject: [PATCH 46/70] skip n+1 on linkable images in content#edit --- app/controllers/content_controller.rb | 4 ++++ .../content/form/field_types/_migration_link.html.erb | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/controllers/content_controller.rb b/app/controllers/content_controller.rb index 4eea63bc8..ec99a8d97 100644 --- a/app/controllers/content_controller.rb +++ b/app/controllers/content_controller.rb @@ -152,6 +152,10 @@ def edit return redirect_to @content, notice: t(:no_do_permission) end + @random_image_including_private_pool_cache = ImageUpload.where( + user_id: current_user.id, + ).group_by { |image| [image.content_type, image.content_id] } + respond_to do |format| format.html { render 'content/edit', locals: { content: @content } } format.json { render json: @content } diff --git a/app/views/content/form/field_types/_migration_link.html.erb b/app/views/content/form/field_types/_migration_link.html.erb index b879ae13b..034e2d64c 100644 --- a/app/views/content/form/field_types/_migration_link.html.erb +++ b/app/views/content/form/field_types/_migration_link.html.erb @@ -30,8 +30,13 @@ ) %> <% @linkables_raw.fetch(page_type.name, []).each do |linkable| %> + <% + linkable_image = @random_image_including_private_pool_cache.fetch([linkable.page_type, linkable.id], []) + .sample + .try(:src, :thumb) || asset_path("card-headers/#{linkable.page_type.downcase.pluralize}.jpg") + %>
-
- Used by <%= pluralize page_list.length, 'page' %> -
+
+ <%= form_for tag, url: rename_tag_path(tag: tag) do |f| %> +
+
+ <%= f.text_field :label, class: '', value: tag %> + <%= f.label :label, 'Rename tag' %> +
+
+ <%= f.submit 'Mass-rename', class: 'btn white blue-text', onclick: "javascript: M.toast({ html: 'Saving changes...' });" %> +
+
+ <% end %> +
+
<%= link_to 'Delete this tag', tag_remove_path( page_type: content_type.name, slug: PageTagService.slug_for(tag) ), data: { confirm: "Are you sure? This will delete this tag and remove it from all pages." - }, class: 'red-text' + }, class: 'red-text btn red white-text' %>
+
+ Used by <%= pluralize page_list.length, 'page' %> +
<% page_list.each do |page_tag| %>
<%= link_to send("#{page_tag.page_type.downcase}_path", page_tag.page_id) do %> diff --git a/config/routes.rb b/config/routes.rb index 0becf6582..e2ddef15e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -98,7 +98,9 @@ get '/scratchpad', to: 'main#notes', as: :notes - get 'tag/remove', to: 'page_tags#remove' + get 'tag/remove', to: 'page_tags#remove' + # post 'tag/:slug/update', to: 'page_tags#update', as: :update_tag + post '/tag/:tag/rename', to: 'page_tags#rename', as: :rename_tag delete 'tag/:id/destroy', to: 'page_tags#destroy', as: :destroy_specific_tag # Legacy route: left intact so /my/documents/X URLs continue to work for everyone's bookmarks