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

#initialize(debug = false) ⇒ DatabaseWizard

Returns a new instance of DatabaseWizard.



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

def initialize(debug = false)
  @databases = []
  @num_of_set_up_databases = 0
  @debug = debug
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, db_conn_str_tpl) ⇒ Object



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 16

def initialize_num_of_databases(num_of_databases, db_conn_str_tpl)
  Parallel.each(1..num_of_databases, in_threads: num_of_databases, finish: method(:handle_finish)) do |i|
    database_connection_string = sprintf(db_conn_str_tpl, i)

    setup_db_cmd = build_setup_db_cmd(database_connection_string)

    puts "[DEBUG] command: #{setup_db_cmd}" if @debug

    Open3.popen3(setup_db_cmd) do |stdin, 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

      stdout.readlines.each { |line| puts line } if @debug

      result
    end
  end
end