copy_db_from_prod 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: b9e19bb98ebc1cfd55e787e300b1435108fa2335
4
- data.tar.gz: b578debcc2bbd4d3b617285a1333795a71998103
3
+ metadata.gz: 3304f3a840aae3a772dcd7ee6a0c15978d0a9d6e
4
+ data.tar.gz: eef944dcfc6e25a7434082f670fba43548b080ff
5
5
  SHA512:
6
- metadata.gz: db3bb93ac39b0dfb0929915b3f8db13a85dd99759cec9b8e825698db837cdf4dfa4dbcde55b84bc53713c54cb547ba0aa808ae850fbbe7a75dad2d00b69a7e81
7
- data.tar.gz: d7456991274c5b99bb1d658f6fce837ed976bd9532074cd919c412860f6b6fa370e7b1a68004b37ac4882abca1064eb7462dda9a94e1e05aa4edb7507894bd04
6
+ metadata.gz: 2dbafac3077cae23f82ea84827eff4a1c5de20c202ae33f98363638742f96c53ca745c2de7d9d13f31e374c4c4a4be9754f78a1f3c3dde12f3dbc3fdd10a6550
7
+ data.tar.gz: cf2ca1887b2d161d2540a5323d1c1fb79ca72a4da550d3294ecc7ee5cc9aa1936304906f44f5b569decc6b0da4a0a05a7d4788ccae1ee9eb1805cc24ad6b854f
@@ -7,7 +7,7 @@ def echo_wrong_args
7
7
  end
8
8
 
9
9
  def echo_help
10
- puts("copy_db_from_prod -h <host> -u <user> -p <path>
10
+ puts("copy_db_from_prod -h <host> -u <user> -p <path> --schema-only
11
11
  <user> - default 'deploy'
12
12
  <path> - default '/projects/insales3', without / at the end")
13
13
  end
@@ -3,7 +3,7 @@ require 'yaml'
3
3
  require 'pg'
4
4
 
5
5
  class CopyDbFromProd
6
- attr_accessor :cf
6
+ attr_accessor :cf, :conn
7
7
 
8
8
  def self.hi
9
9
  puts "Hello world!"
@@ -21,12 +21,21 @@ class CopyDbFromProd
21
21
 
22
22
  def download_schema
23
23
  Net::SSH.start(cf[:host], cf[:user], key_data: cf[:keys], keys_only: TRUE) do |ssh|
24
- @prod_conf = YAML.load(ssh.exec!("cat #{cf[:deploy_to]}/config/database.yml"))['production']
24
+ yml_text = ssh.exec!("cat #{cf[:deploy_to]}/config/database.yml")
25
+ begin
26
+ @prod_conf ||= YAML.load(yml_text)['production']
27
+ rescue => e
28
+ raise "Can't access to database.yml, check -p params\n #{e}"
29
+ end
25
30
  prod_data = ssh.exec!(dump_schema)
26
31
  if prod_data.include?('pg_dump') || prod_data.include?('warn')
27
- raise "error: pg_dump dosen't work correct \n #{prod_data}"
32
+ raise "error: pg_dump dosen't work correct\n #{prod_data}"
28
33
  else
29
- return Zlib::GzipReader.new(StringIO.new(ssh.exec!(prod_data))).read
34
+ begin
35
+ return Zlib::GzipReader.new(StringIO.new(prod_data)).read
36
+ rescue => e
37
+ raise "#{e}\n #{prod_data}"
38
+ end
30
39
  end
31
40
  end
32
41
  end
@@ -40,18 +49,39 @@ class CopyDbFromProd
40
49
  "#{cmd.join(' ')} --schema-only --no-owner --no-privileges -Z9"
41
50
  end
42
51
 
52
+ def drop_restore_table
53
+ conn.exec("SELECT table_name
54
+ FROM information_schema.tables
55
+ WHERE table_schema = 'public'
56
+ AND table_name LIKE '%_201%'
57
+ ORDER BY table_name"
58
+ ) do |result|
59
+ conn.exec(result.map { |row| "DROP TABLE #{row['table_name']}" }.join(';'))
60
+ end
61
+ end
62
+
43
63
  def load_schema
44
64
  @dev_conf = YAML.load(File.open('config/database.yml', 'r').read)['development']
45
- conn = PGconn.open(host: @dev_conf['host'],
65
+ @conn = PGconn.open(host: @dev_conf['host'],
46
66
  dbname: 'postgres',
47
67
  user: @dev_conf['username'],
48
68
  password: @dev_conf['password'])
49
69
  conn.exec("DROP DATABASE IF EXISTS #{@dev_conf['database']}")
50
70
  conn.exec("CREATE DATABASE #{@dev_conf['database']}")
51
- conn = PGconn.open(host: @dev_conf['host'],
71
+ @conn = PGconn.open(host: @dev_conf['host'],
52
72
  dbname: @dev_conf['database'],
53
73
  user: @dev_conf['username'],
54
74
  password: @dev_conf['password'])
55
- conn.exec(download_schema)
75
+ schema = download_schema
76
+ begin
77
+ conn.exec(schema)
78
+ rescue => e
79
+ raise "Database #{@dev_conf['database']}\n#{e}\n #{schema}"
80
+ end
81
+ drop_restore_table if 'insales_dev' == @dev_conf['database']
82
+ end
83
+
84
+ def copy_env_table
85
+
56
86
  end
57
87
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: copy_db_from_prod
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - vgulaev