Class: DatabaseWizard

Inherits:
Object
  • Object
show all
Defined in:
lib/berl/database_wizard.rb

Overview

Service to setup databases

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDatabaseWizard

Returns a new instance of DatabaseWizard.



10
11
12
13
# File 'lib/berl/database_wizard.rb', line 10

def initialize
  @databases = []
  @num_of_set_up_databases = 0
end

Instance Attribute Details

#databasesObject (readonly)

Returns the value of attribute databases.



8
9
10
# File 'lib/berl/database_wizard.rb', line 8

def databases
  @databases
end

Instance Method Details

#initialize_num_of_databases(num_of_databases) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/berl/database_wizard.rb', line 15

def initialize_num_of_databases(num_of_databases)
  database_connection_string_tpl = ENV["PARALLELE_DATABASE_URL_TEMPLATE"]

  if database_connection_string_tpl.nil?
    database_connection_string_tpl = "mysql://root:root_password@db/sylius_%s?charset=utf8mb4"
  end

  Parallel.each(1..num_of_databases, in_processes: 4, finish: method(:handle_finish)) do |i|
    database_connection_string = printf(database_connection_string_tpl, i)

    setup_db_cmd = build_setup_db_cmd(database_connection_string)
    Open3.popen3(setup_db_cmd) do |_, stdout, stderr, wait_thr|
      result = {}
      result['status'] = wait_thr.value == 0 ? 'success' : 'fail'
      result['output'] = []
      result['output'].push(*stdout.readlines)
      result['output'].push(*stderr.readlines)
      result['database_connection_string'] = database_connection_string

      result
    end
  end
end