data_keeper 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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