phenix 0.3.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/lib/phenix.rb +37 -13
  3. data/lib/phenix/version.rb +1 -1
  4. metadata +18 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4e5ee1863ab6fb76d4f2ee85d8dc37f6b1298ebe
4
- data.tar.gz: e75d5e0a0c7a582559a1e54a63affcb29e7c322c
2
+ SHA256:
3
+ metadata.gz: 58a44d30d1fa3381afa8430a76cd2b17800c7fecdbe78a21a1af6a23e9a7d0fb
4
+ data.tar.gz: 5497fc3d6e5735a320177c95d2b55784c8399be847b8471bf2fed0a28a45e750
5
5
  SHA512:
6
- metadata.gz: 0a8a74352d9cc56ccc1043a36d231bc8a30ecc30ca7320d3697288dff8cb07364b03e5cf8738a65f18dc4fde8be5ad82fe1035ca99829bf2bdf5135628ca6fb2
7
- data.tar.gz: 0defc7e17a2a5088c7857222cbd29178ca9b04cad9c2696679d4fba3c0e9f18109c443c845826629268e5090c36e65eee0b1bd70da322624e05e3eacabf43d74
6
+ metadata.gz: bd3abcc151bcaed345375ab9c6baf11543f1c06afe36df21911c6adc820e959d92ca09b3de37ac08fde562f7d65059717876afac17981fee0224ee78b97060d3
7
+ data.tar.gz: d3f550a2f0fae38458cdfbdc604707fa8bf24961525c1b1a20e1024588168123962fa4c8e96d6c17c34570518215628c8a2f0e704d1a6d4e282535bd9b8cf821
@@ -3,6 +3,13 @@ require 'phenix/version'
3
3
  require 'erb'
4
4
 
5
5
  module Phenix
6
+ CONFIG_TO_MYSQL_MAPPING = {
7
+ 'username' => 'user',
8
+ 'password' => 'password',
9
+ 'port' => 'port',
10
+ 'host' => 'host'
11
+ }.freeze
12
+
6
13
  class << self
7
14
  attr_accessor :database_config_path, :schema_path, :skip_database
8
15
  attr_accessor :current_configuration
@@ -36,15 +43,18 @@ module Phenix
36
43
 
37
44
  def create_databases(with_schema)
38
45
  for_each_database do |name, conf|
39
- run_mysql_command(conf, "CREATE DATABASE #{conf['database']}")
46
+ run_mysql_command(conf, "CREATE DATABASE IF NOT EXISTS #{conf['database']}")
40
47
  ActiveRecord::Base.establish_connection(name.to_sym)
41
48
  populate_database if with_schema
42
49
  end
43
50
  end
44
51
 
45
52
  def populate_database
53
+ old = ActiveRecord::Migration.verbose
46
54
  ActiveRecord::Migration.verbose = false
47
55
  load(Phenix.schema_path)
56
+ ensure
57
+ ActiveRecord::Migration.verbose = old
48
58
  end
49
59
 
50
60
  def drop_databases
@@ -54,25 +64,39 @@ module Phenix
54
64
  end
55
65
 
56
66
  def for_each_database
57
- ActiveRecord::Base.configurations.each do |name, conf|
67
+ configuration_hashes = if ActiveRecord::VERSION::STRING < '6.1'
68
+ ActiveRecord::Base.configurations.to_h
69
+ else
70
+ # We need to get all the configurations and put them back into a hash
71
+ # indexed by the env_name and with configuration_hash as the value.
72
+ ActiveRecord::Base.configurations
73
+ .configurations
74
+ .map { |c| [c.env_name, c.configuration_hash.with_indifferent_access] }
75
+ .to_h
76
+ end
77
+
78
+ configuration_hashes.each do |name, conf|
58
79
  next if conf['database'].nil?
59
80
  next if Phenix.skip_database.call(name, conf)
60
81
  yield(name, conf)
61
82
  end
62
83
  end
63
84
 
64
- def run_mysql_command(conf, command)
65
- @mysql_command ||= begin
66
- commands = [
67
- 'mysql',
68
- "--user=#{conf['username']}"
69
- ]
70
- commands << "--host=#{conf['host']}" if conf['host'].present?
71
- commands << "--port=#{conf['port']}" if conf['port'].present?
72
- commands << " --password=#{conf['password']} 2> /dev/null" if conf['password'].present?
73
- commands.join(' ')
85
+ def run_mysql_command(config, execute)
86
+ command = ['mysql']
87
+ CONFIG_TO_MYSQL_MAPPING.each do |c, m|
88
+ if config.key?(c)
89
+ command << "--#{m}=#{config.fetch(c)}"
90
+ end
74
91
  end
75
- `echo "#{command}" | #{@mysql_command}`
92
+ command << "--execute"
93
+ command << execute
94
+
95
+ pio = IO.popen(command, err: '/dev/null')
96
+ result = pio.read
97
+ pio.close
98
+ raise "Failed to execute #{execute}" unless $?.success?
99
+ result
76
100
  end
77
101
 
78
102
  extend self
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Phenix
3
- VERSION = '0.3.0'
3
+ VERSION = '0.8.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phenix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Schambacher
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-05 00:00:00.000000000 Z
11
+ date: 2021-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,34 +30,34 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.2'
33
+ version: '4.2'
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
- version: '5.2'
36
+ version: '6.2'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: '3.2'
43
+ version: '4.2'
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
- version: '5.2'
46
+ version: '6.2'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '10.5'
53
+ version: 12.3.3
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '10.5'
60
+ version: 12.3.3
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rspec
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +73,7 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '3.4'
75
75
  - !ruby/object:Gem::Dependency
76
- name: wwtd
76
+ name: bump
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
@@ -87,7 +87,7 @@ dependencies:
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: bump
90
+ name: mysql2
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
@@ -101,7 +101,7 @@ dependencies:
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
- name: mysql2
104
+ name: single_cov
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ">="
@@ -114,7 +114,7 @@ dependencies:
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
- description:
117
+ description:
118
118
  email:
119
119
  - pschambacher@zendesk.com
120
120
  executables: []
@@ -126,7 +126,7 @@ files:
126
126
  homepage: https://github.com/zendesk/phenix
127
127
  licenses: []
128
128
  metadata: {}
129
- post_install_message:
129
+ post_install_message:
130
130
  rdoc_options: []
131
131
  require_paths:
132
132
  - lib
@@ -141,9 +141,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  - !ruby/object:Gem::Version
142
142
  version: '0'
143
143
  requirements: []
144
- rubyforge_project:
145
- rubygems_version: 2.6.9
146
- signing_key:
144
+ rubygems_version: 3.2.2
145
+ signing_key:
147
146
  specification_version: 4
148
147
  summary: Read a dynamic database.yml file and allow you to drop/create the database
149
148
  on demand.