Class: Decidim::Cdtb::Upgrades::ValidateMigrationsTask

Inherits:
Task
  • Object
show all
Defined in:
lib/decidim/cdtb/upgrades/validate_migrations_task.rb

Overview

Validates that all Decidim modules have the migrations installed.

Constant Summary collapse

STEPS_IN_DO_EXECUTION =
2

Instance Attribute Summary

Attributes inherited from Task

#num_applied, #title

Instance Method Summary collapse

Methods inherited from Task

#execute!, #finish, #init

Methods included from TasksUtils

#do_log_error, #do_log_info, #log_task_end, #log_task_failure, #log_task_info, #log_task_step, #log_task_title, #logger

Constructor Details

#initializeValidateMigrationsTask

Returns a new instance of ValidateMigrationsTask.



13
14
15
16
# File 'lib/decidim/cdtb/upgrades/validate_migrations_task.rb', line 13

def initialize
  progress_bar= { title: "Modules" }
  super("VALIDATE MODULES MIGRATIONS", progress_bar:)
end

Instance Method Details

#do_execution(context) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/decidim/cdtb/upgrades/validate_migrations_task.rb', line 36

def do_execution(context)
  progress_bar= context[:progress_bar]

  output= install_gem_migrations

  progress_bar.increment

  @pending_migrations= output.lines.select { |l| l.include?("Copied migration") }

  progress_bar.increment
end

#end_execution(_ctx) ⇒ Object



48
49
50
51
# File 'lib/decidim/cdtb/upgrades/validate_migrations_task.rb', line 48

def end_execution(_ctx)
  log_task_step("#{@gem_names.size} gems validated")
  log_task_failure(@pending_migrations.join("\n")) if pending_migrations?
end

#install_gem_migrationsObject



53
54
55
56
# File 'lib/decidim/cdtb/upgrades/validate_migrations_task.rb', line 53

def install_gem_migrations
  install_step= InstallGemMigrationsStep.new
  install_step.install!(@gem_names)
end

#pending_migrations?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/decidim/cdtb/upgrades/validate_migrations_task.rb', line 32

def pending_migrations?
  @pending_migrations.present?
end

#prepare_execution(_ctx) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/decidim/cdtb/upgrades/validate_migrations_task.rb', line 18

def prepare_execution(_ctx)
  all_railties= Rails.application.migration_railties
  railties_w_migrations= all_railties.select do |railtie|
    railtie.respond_to?(:paths) && railtie.paths["db/migrate"].first.present?
  end
  @gem_names= railties_w_migrations.map(&:railtie_name)

  log_task_info("Found #{@gem_names.size} gems with migrations. Validating.....")
end

#total_itemsObject



28
29
30
# File 'lib/decidim/cdtb/upgrades/validate_migrations_task.rb', line 28

def total_items
  STEPS_IN_DO_EXECUTION
end