From c78211af49c35850433a53a539d7655ee1fa2476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 3 Jun 2019 11:57:23 +0200 Subject: [PATCH 1/5] Add task to upgrade to version 1.0.0 It includes every task needed for the upgrade. --- lib/tasks/consul.rake | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/tasks/consul.rake diff --git a/lib/tasks/consul.rake b/lib/tasks/consul.rake new file mode 100644 index 000000000..acaa3686a --- /dev/null +++ b/lib/tasks/consul.rake @@ -0,0 +1,13 @@ +namespace :consul do + desc "Runs tasks needed to upgrade to the latest version" + task execute_release_tasks: "execute_release_1.0.0_tasks" + + desc "Runs tasks needed to upgrade from 1.0.0-beta to 1.0.0" + task "execute_release_1.0.0_tasks": [ + "poll:generate_slugs", + "stats_and_results:migrate_to_reports", + "budgets:calculate_ballot_lines", + "settings:remove_deprecated_settings", + "stats:generate" + ] +end From 685c96c40d76b0fbc4f617cd9e2841bdb6176451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 3 Jun 2019 16:34:06 +0200 Subject: [PATCH 2/5] Add capistrano task to deploy and upgrade CONSUL --- config/deploy.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/config/deploy.rb b/config/deploy.rb index bb7627f3a..eb48fb135 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -51,6 +51,13 @@ namespace :deploy do after :published, "refresh_sitemap" after :finishing, "deploy:cleanup" + + + desc "Deploys and runs the tasks needed to upgrade to a new release" + task :upgrade do + after "add_new_settings", "execute_release_tasks" + invoke "deploy" + end end task :install_bundler_gem do @@ -78,3 +85,13 @@ task :add_new_settings do end end end + +task :execute_release_tasks do + on roles(:app) do + within release_path do + with rails_env: fetch(:rails_env) do + execute :rake, "consul:execute_release_tasks" + end + end + end +end From 3ab2085e05ba80048c3561120241c3a13323c22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 3 Jun 2019 16:43:42 +0200 Subject: [PATCH 3/5] Move calculate_ballot_lines task to the right file We already have a file with the proper budgets namespace. --- lib/tasks/budgets.rake | 7 +++++++ lib/tasks/regenerate_ballot_lines_cache.rake | 8 -------- 2 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 lib/tasks/regenerate_ballot_lines_cache.rake diff --git a/lib/tasks/budgets.rake b/lib/tasks/budgets.rake index c53c71103..4e2961198 100644 --- a/lib/tasks/budgets.rake +++ b/lib/tasks/budgets.rake @@ -1,4 +1,11 @@ namespace :budgets do + desc "Regenerate ballot_lines_count cache" + task calculate_ballot_lines: :environment do + Budget::Ballot.find_each do |ballot| + Budget::Ballot.reset_counters ballot.id, :lines + end + end + namespace :email do desc "Sends emails to authors of selected investments" diff --git a/lib/tasks/regenerate_ballot_lines_cache.rake b/lib/tasks/regenerate_ballot_lines_cache.rake deleted file mode 100644 index d008ec556..000000000 --- a/lib/tasks/regenerate_ballot_lines_cache.rake +++ /dev/null @@ -1,8 +0,0 @@ -namespace :budgets do - desc "Regenerate ballot_lines_count cache" - task calculate_ballot_lines: :environment do - Budget::Ballot.find_each do |ballot| - Budget::Ballot.reset_counters ballot.id, :lines - end - end -end From 1d0b05832cb9e1588db07d76c09ce9fe7c3fa9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 3 Jun 2019 16:59:40 +0200 Subject: [PATCH 4/5] Add info messages for release 1.0.0 tasks So users know what's going on when they upgrade CONSUL. --- lib/application_logger.rb | 11 +++++++++++ lib/tasks/budgets.rake | 5 ++++- lib/tasks/polls.rake | 2 ++ lib/tasks/settings.rake | 2 ++ lib/tasks/stats.rake | 2 ++ lib/tasks/stats_and_results.rake | 1 + 6 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 lib/application_logger.rb diff --git a/lib/application_logger.rb b/lib/application_logger.rb new file mode 100644 index 000000000..a9f953f48 --- /dev/null +++ b/lib/application_logger.rb @@ -0,0 +1,11 @@ +class ApplicationLogger + def info(message) + logger.info(message) + end + + def logger + @logger ||= Logger.new(STDOUT).tap do |logger| + logger.formatter = proc { |severity, _datetime, _progname, msg| "#{severity} #{msg}\n" } + end + end +end diff --git a/lib/tasks/budgets.rake b/lib/tasks/budgets.rake index 4e2961198..d9fc8f50f 100644 --- a/lib/tasks/budgets.rake +++ b/lib/tasks/budgets.rake @@ -1,8 +1,11 @@ namespace :budgets do desc "Regenerate ballot_lines_count cache" task calculate_ballot_lines: :environment do - Budget::Ballot.find_each do |ballot| + ApplicationLogger.new.info "Calculating ballot lines" + + Budget::Ballot.find_each.with_index do |ballot, index| Budget::Ballot.reset_counters ballot.id, :lines + print "." if (index % 10_000).zero? end end diff --git a/lib/tasks/polls.rake b/lib/tasks/polls.rake index 0e689e00c..2bd16c46f 100644 --- a/lib/tasks/polls.rake +++ b/lib/tasks/polls.rake @@ -1,6 +1,8 @@ namespace :poll do desc "Generate slugs polls" task generate_slugs: :environment do + ApplicationLogger.new.info "Generating poll slugs" + Poll.find_each do |poll| poll.update_columns(slug: poll.generate_slug, updated_at: Time.current) if poll.generate_slug? end diff --git a/lib/tasks/settings.rake b/lib/tasks/settings.rake index c206af98d..5c4a4db19 100644 --- a/lib/tasks/settings.rake +++ b/lib/tasks/settings.rake @@ -2,6 +2,8 @@ namespace :settings do desc "Remove deprecated settings" task remove_deprecated_settings: :environment do + ApplicationLogger.new.info "Removing deprecated settings" + deprecated_keys = [ "place_name", "banner-style.banner-style-one", diff --git a/lib/tasks/stats.rake b/lib/tasks/stats.rake index a454d88cd..2d68613c5 100644 --- a/lib/tasks/stats.rake +++ b/lib/tasks/stats.rake @@ -1,6 +1,8 @@ namespace :stats do desc "Generates stats which are not cached yet" task generate: :environment do + ApplicationLogger.new.info "Updating budget and poll stats" + Budget.find_each do |budget| Budget::Stats.new(budget).generate print "." diff --git a/lib/tasks/stats_and_results.rake b/lib/tasks/stats_and_results.rake index 5aa8f7e39..bc4cdacca 100644 --- a/lib/tasks/stats_and_results.rake +++ b/lib/tasks/stats_and_results.rake @@ -1,6 +1,7 @@ namespace :stats_and_results do desc "Migrates stats_enabled and results_enabled data to enabled reports" task migrate_to_reports: :environment do + ApplicationLogger.new.info "Migrating stats and results" Migrations::Reports.new.migrate end end From d2c075cc938cd9bb0d172ba68a3db287c1f9e515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Wed, 5 Jun 2019 19:28:31 +0200 Subject: [PATCH 5/5] Add new settings on servers with the `db` role This task adds records to the database, so the role `db` is more appropriate. --- config/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index eb48fb135..602e86ae1 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -77,7 +77,7 @@ task :refresh_sitemap do end task :add_new_settings do - on roles(:app) do + on roles(:db) do within release_path do with rails_env: fetch(:rails_env) do execute :rake, "settings:add_new_settings"