data_keeper 0.1.5 → 0.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2fc356b01f1619f2ec815a556092bd13fc28b44b2b201707c6a820da00fcff70
4
- data.tar.gz: 8f2d4dcc59035b7fee1131daa3cfed6dedb0bf5c635e781d48dc65c7c43a58e7
3
+ metadata.gz: 281f71c099696e1d51c88dd57e2cd0edf5f028bbbf4340c4457923e3a17b553a
4
+ data.tar.gz: 1592db229f9407735630803bff1a97bd85ed051ec30b878029952ffcfb272759
5
5
  SHA512:
6
- metadata.gz: 5102f1e716045e8bc425d69c71b03c8cad46b805d3caf7db12a0eb9ff073f53c1c94cebfd70a9909b8d806f543c66e1ecd7f3c3d3d344a688bacf8bdf6d2f3f5
7
- data.tar.gz: 0b4459b6441c79cb3768fa769271ccb7661f458cf4f69b75562a4fc92ebfa2e28502bf294102689112b399cf97938c25ee703775444132f39c2a38e6d402bfa4
6
+ metadata.gz: cf10459525a1cd3f210c6ef926b2b6d87a217505c8d8c8c155e99021d7a8837312fbf0038302987a683bf2a66f335d7507071451eff213ce004536ea42d26ca9
7
+ data.tar.gz: 30ff5218bb48851d938b96afba015e9076226b25342171e35ac47b5d78ecc8d8c3308afc2ffd6a94ded725495303da9a65f4394530a63cb193fcf005a90d4952
data/.gitignore CHANGED
@@ -6,5 +6,6 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /lib/tmp
9
10
 
10
11
  Gemfile.lock
data/Gemfile CHANGED
@@ -5,3 +5,4 @@ gemspec
5
5
 
6
6
  gem "rake", "~> 12.0"
7
7
  gem "minitest", "~> 5.0"
8
+ gem 'pg'
@@ -1,7 +1,7 @@
1
1
  module DataKeeper
2
2
  module DatabaseConfig
3
3
  def database_connection_config
4
- Rails.configuration.database_configuration[Rails.env]
4
+ @database_connection_config ||= DataKeeper.database_config.call
5
5
  end
6
6
 
7
7
  def psql_env
@@ -33,6 +33,7 @@ module DataKeeper
33
33
  @tables = []
34
34
  @raw_sqls = {}
35
35
  @definition_block = definition_block
36
+ @on_after_load_block = nil
36
37
  end
37
38
 
38
39
  def evaluate!
@@ -20,48 +20,66 @@ module DataKeeper
20
20
  end
21
21
 
22
22
  if @dump.on_after_load_block
23
+ ActiveRecord::Base.establish_connection
23
24
  @dump.on_after_load_block.call
24
25
  end
25
26
  end
26
27
 
27
28
  private
28
29
 
29
- def load_full_database!
30
- ensure_schema_compatibility!
30
+ def log_redirect
31
+ if Terrapin::CommandLine.logger
32
+ ""
33
+ else
34
+ " 2>/dev/null"
35
+ end
36
+ end
31
37
 
32
- pg_restore = Terrapin::CommandLine.new(
33
- 'pg_restore',
34
- "#{connection_args} -j 4 --no-owner --dbname #{database} #{@file.path} 2>/dev/null",
38
+ def set_ar_internal_metadata!
39
+ cmd = Terrapin::CommandLine.new(
40
+ 'psql',
41
+ "#{connection_args} -d :database -c :sql",
35
42
  environment: psql_env
36
43
  )
37
44
 
38
- pg_restore.run(
45
+ cmd.run(
39
46
  database: database,
40
47
  host: host,
41
- port: port
48
+ port: port,
49
+ sql: "DELETE from ar_internal_metadata"
42
50
  )
43
51
 
44
- cmd = Terrapin::CommandLine.new(
45
- 'psql',
46
- "#{connection_args} -d :database -c :sql",
52
+ cmd.run(
53
+ database: database,
54
+ host: host,
55
+ port: port,
56
+ sql: "INSERT into ar_internal_metadata (key, value, created_at, updated_at) VALUES ('environment', 'development', '2020-04-03 12:25:54.094209', '2020-04-03 12:25:54.094209')"
57
+ )
58
+ end
59
+
60
+ def load_full_database!
61
+ ensure_schema_compatibility!
62
+
63
+ pg_restore = Terrapin::CommandLine.new(
64
+ 'pg_restore',
65
+ "#{connection_args} -j 4 --no-owner --dbname #{database} #{@file.path}#{log_redirect}",
47
66
  environment: psql_env
48
67
  )
49
68
 
50
- cmd.run(
69
+ pg_restore.run(
51
70
  database: database,
52
71
  host: host,
53
- port: port,
54
- sql: "UPDATE ar_internal_metadata SET value = 'development'"
72
+ port: port
55
73
  )
74
+
75
+ set_ar_internal_metadata!
56
76
  end
57
77
 
58
78
  def load_partial_database!
59
79
  inflate(@file.path) do |schema_path, tables_path, sql_files|
60
- ensure_schema_compatibility!
61
-
62
80
  pg_restore = Terrapin::CommandLine.new(
63
81
  'pg_restore',
64
- "#{connection_args} -j 4 --no-owner --dbname :database #{schema_path} 2>/dev/null",
82
+ "#{connection_args} -j 4 --no-owner -s --dbname :database #{schema_path}#{log_redirect}",
65
83
  environment: psql_env
66
84
  )
67
85
 
@@ -73,7 +91,7 @@ module DataKeeper
73
91
 
74
92
  pg_restore = Terrapin::CommandLine.new(
75
93
  'pg_restore',
76
- "#{connection_args} --data-only -j 4 --no-owner --disable-triggers --dbname :database #{tables_path} 2>/dev/null",
94
+ "#{connection_args} --data-only -j 4 --no-owner --disable-triggers --dbname :database #{tables_path}#{log_redirect}",
77
95
  environment: psql_env
78
96
  )
79
97
 
@@ -99,7 +117,7 @@ module DataKeeper
99
117
  )
100
118
  end
101
119
 
102
- Rake::Task['db:environment:set'].invoke
120
+ set_ar_internal_metadata!
103
121
  end
104
122
  end
105
123
 
@@ -1,3 +1,3 @@
1
1
  module DataKeeper
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/lib/data_keeper.rb CHANGED
@@ -17,6 +17,7 @@ module DataKeeper
17
17
 
18
18
  @dump_definition_builders = {}
19
19
  @storage = nil
20
+ @database_config = -> { Rails.configuration.database_configuration[Rails.env] }
20
21
 
21
22
  def self.define_dump(name, type = :partial, &block)
22
23
  @dump_definition_builders[name.to_sym] = DefinitionBuilder.new(type, block)
@@ -59,6 +60,14 @@ module DataKeeper
59
60
  @storage = value
60
61
  end
61
62
 
63
+ def self.database_config=(value)
64
+ @database_config = value
65
+ end
66
+
67
+ def self.database_config
68
+ @database_config
69
+ end
70
+
62
71
  def self.clear_dumps!
63
72
  @dump_definition_builders = {}
64
73
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_keeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Campos
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-02 00:00:00.000000000 Z
11
+ date: 2021-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord