remote_database_importer 0.1.3 → 0.1.4
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 +4 -4
- data/CHANGELOG.md +10 -2
- data/Gemfile.lock +1 -3
- data/lib/remote_database_importer/colorize.rb +13 -0
- data/lib/remote_database_importer/config.rb +21 -18
- data/lib/remote_database_importer/operation.rb +16 -15
- data/lib/remote_database_importer/version.rb +1 -1
- data/lib/tasks/remote_database_importer.rake +1 -2
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28a65a635e4ee78fdbce0dfce253b88a44fa190a887a8d68f928f5193d298fec
|
4
|
+
data.tar.gz: c23343009f9e8cf5d819fdf4a2dae6e88e380d30ef7591382fc900bcb1f40e04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b7bd6d20734483e93dcefec67a7890300f6946047003de8a12915a982063d0de086f0b372f188271b6f3c0c51b22bb6b5baac50f25034e7bb548bee5a19817e
|
7
|
+
data.tar.gz: 7cc6a60c1141353e8cdf2d910fcab0d0f9c991e56c7cc0fbda513f3461fbaa6ba1abe16f0bcb07f13a99717fed81c519b01455da6b257fa0852cede0366d9e03
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
3
|
+
## 0.1.4 (2022-11-17)
|
4
|
+
- Remove colorize as a dependency
|
5
|
+
- Code refactoring
|
6
|
+
|
7
|
+
## 0.1.3 (2022-11-06)
|
8
|
+
- Remove Thor as a dependency
|
9
|
+
- Add custom commands that run after the successful import of the remote database
|
10
|
+
|
11
|
+
## 0.1.2 (2022-10-29)
|
4
12
|
|
5
13
|
- Terminate current DB sessions after dump remote database. So the chance of an open session is smaller
|
6
14
|
- Print out where the config was saved
|
7
15
|
- Print how long the import went
|
8
16
|
|
9
|
-
##
|
17
|
+
## 0.1.0 (2022-10-24)
|
10
18
|
|
11
19
|
- Initial release
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
remote_database_importer (0.1.
|
5
|
-
colorize (~> 0.8)
|
4
|
+
remote_database_importer (0.1.4)
|
6
5
|
tty-config (~> 0.6)
|
7
6
|
tty-spinner (~> 0.9)
|
8
7
|
|
@@ -10,7 +9,6 @@ GEM
|
|
10
9
|
remote: https://rubygems.org/
|
11
10
|
specs:
|
12
11
|
ast (2.4.2)
|
13
|
-
colorize (0.8.1)
|
14
12
|
diff-lcs (1.5.0)
|
15
13
|
json (2.6.2)
|
16
14
|
parallel (1.22.1)
|
@@ -1,32 +1,35 @@
|
|
1
1
|
module RemoteDatabaseImporter
|
2
2
|
class Config
|
3
3
|
require "tty/config"
|
4
|
-
|
4
|
+
require_relative "colorize"
|
5
5
|
|
6
|
+
attr_accessor :config
|
7
|
+
|
6
8
|
def initialize
|
7
9
|
@config = TTY::Config.new
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
|
11
|
+
config.filename = "remote_database_importer"
|
12
|
+
config.extname = ".yml"
|
13
|
+
config.append_path Dir.pwd
|
11
14
|
end
|
12
15
|
|
13
16
|
def read_or_create_configfile
|
14
|
-
unless
|
15
|
-
puts "==========================================================="
|
17
|
+
unless config.exist?
|
18
|
+
puts Colorize.green("===========================================================")
|
16
19
|
puts "Hi there! There is no config file yet, lets create one! 😄"
|
17
20
|
create_default_config
|
18
|
-
config_location = [
|
21
|
+
config_location = [config.filename, config.extname].join
|
19
22
|
puts "Created config file: #{config_location}"
|
20
|
-
puts "==========================================================="
|
23
|
+
puts Colorize.green("===========================================================")
|
21
24
|
end
|
22
|
-
|
25
|
+
config.read
|
23
26
|
end
|
24
27
|
|
25
28
|
def ask(question, default: nil, options: nil)
|
26
29
|
question += " (#{options.join(" / ")})" if options.present?
|
27
30
|
question += " [#{default}]" if default.present?
|
28
31
|
|
29
|
-
puts
|
32
|
+
puts Colorize.blue(question)
|
30
33
|
answer = $stdin.gets.chomp
|
31
34
|
answer.present? ? answer : default
|
32
35
|
end
|
@@ -36,20 +39,20 @@ module RemoteDatabaseImporter
|
|
36
39
|
environment_count = 1
|
37
40
|
|
38
41
|
local_db_name = ask("Whats the name of the local database you wanna import to?", default: "myawesomeapp_development")
|
39
|
-
|
42
|
+
config.set(:local_db_name, value: local_db_name)
|
40
43
|
puts
|
41
44
|
|
42
45
|
while enter_new_environments
|
43
|
-
puts "#{environment_count}. Environment"
|
46
|
+
puts Colorize.green("#{environment_count}. Environment")
|
44
47
|
env = ask("Whats the name of the #{environment_count}. environment you wanna add?", default: "staging")
|
45
48
|
puts
|
46
49
|
|
47
|
-
puts "Database settings:"
|
50
|
+
puts Colorize.green("Database settings:")
|
48
51
|
db_name = ask("Enter the DB name for the #{env} environment:", default: "myawesomeapp_#{env}")
|
49
52
|
db_user = ask("Enter the DB user for the #{env} environment:", default: "deployer")
|
50
53
|
puts
|
51
54
|
|
52
|
-
puts "Connection settings:"
|
55
|
+
puts Colorize.green("Connection settings:")
|
53
56
|
host = ask("Enter the IP or hostname of the DB server:", default: "myawesomeapp.com")
|
54
57
|
dump_type = ask("Should the DB dump happen over a ssh tunnel or can pg_dump connect to the DB port directly?", default: "pg_dump", options: ["ssh_tunnel", "pg_dump"])
|
55
58
|
|
@@ -77,7 +80,7 @@ module RemoteDatabaseImporter
|
|
77
80
|
}
|
78
81
|
}
|
79
82
|
}
|
80
|
-
|
83
|
+
config.append(env_config, to: :environments)
|
81
84
|
|
82
85
|
continue = ask("Do you wanna add another environment? (anything other than 'yes' will exit)")
|
83
86
|
if continue&.downcase == "yes"
|
@@ -87,12 +90,12 @@ module RemoteDatabaseImporter
|
|
87
90
|
end
|
88
91
|
end
|
89
92
|
|
90
|
-
puts "Define custom commands that run after successful import:"
|
93
|
+
puts Colorize.green("Define custom commands that run after successful import:")
|
91
94
|
custom_commands = ask("Enter semicolon separated commands that should run after importing the DB:", default: "rake db:migrate; echo 'All Done'")
|
92
95
|
puts
|
93
96
|
|
94
|
-
|
95
|
-
|
97
|
+
config.set(:custom_commands, value: custom_commands)
|
98
|
+
config.write
|
96
99
|
end
|
97
100
|
end
|
98
101
|
end
|
@@ -3,15 +3,17 @@ module RemoteDatabaseImporter
|
|
3
3
|
require "remote_database_importer/config"
|
4
4
|
require "tty/spinner/multi"
|
5
5
|
|
6
|
+
attr_accessor :config
|
7
|
+
attr_accessor :current_environment
|
8
|
+
|
6
9
|
LOG_FILE = "tmp/remote_database_importer.log"
|
7
10
|
|
8
11
|
def initialize
|
9
|
-
|
10
|
-
@config = config_handler.read_or_create_configfile
|
12
|
+
@config = RemoteDatabaseImporter::Config.new.read_or_create_configfile
|
11
13
|
end
|
12
14
|
|
13
15
|
def environments
|
14
|
-
|
16
|
+
config.fetch("environments")
|
15
17
|
end
|
16
18
|
|
17
19
|
def select_environment
|
@@ -66,18 +68,17 @@ module RemoteDatabaseImporter
|
|
66
68
|
|
67
69
|
# terminate local db sessions, otherwise the db can't be dropped
|
68
70
|
def terminate_current_db_sessions
|
69
|
-
"psql -d #{
|
71
|
+
"psql -d #{config.fetch("local_db_name")} -c 'SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname = current_database() AND pid <> pg_backend_pid();' > #{LOG_FILE}"
|
70
72
|
end
|
71
73
|
|
72
74
|
def dump_remote_db
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
postgres_port = env["connection"]["postgres_port"]
|
75
|
+
host = current_environment["connection"]["host"]
|
76
|
+
db_name = current_environment["database"]["name"]
|
77
|
+
db_user = current_environment["database"]["user"]
|
78
|
+
dump_type = current_environment["connection"]["dump_type"]
|
79
|
+
ssh_user = current_environment["connection"]["ssh_user"]
|
80
|
+
ssh_port = current_environment["connection"]["ssh_port"]
|
81
|
+
postgres_port = current_environment["connection"]["postgres_port"]
|
81
82
|
|
82
83
|
if dump_type == "ssh_tunnel"
|
83
84
|
"ssh #{ssh_user}@#{host} -p #{ssh_port} 'pg_dump -Fc -U #{db_user} -d #{db_name} -h localhost -C' > #{db_dump_location}"
|
@@ -91,7 +92,7 @@ module RemoteDatabaseImporter
|
|
91
92
|
end
|
92
93
|
|
93
94
|
def restore_db
|
94
|
-
"pg_restore --jobs 8 --no-privileges --no-owner --dbname #{
|
95
|
+
"pg_restore --jobs 8 --no-privileges --no-owner --dbname #{config.fetch("local_db_name")} #{db_dump_location}"
|
95
96
|
end
|
96
97
|
|
97
98
|
def remove_logfile
|
@@ -103,11 +104,11 @@ module RemoteDatabaseImporter
|
|
103
104
|
end
|
104
105
|
|
105
106
|
def custom_commands
|
106
|
-
|
107
|
+
config.fetch("custom_commands")
|
107
108
|
end
|
108
109
|
|
109
110
|
def db_dump_location
|
110
|
-
"tmp/#{
|
111
|
+
"tmp/#{current_environment["database"]["name"]}.dump"
|
111
112
|
end
|
112
113
|
|
113
114
|
def seconds_to_human_readable_time(secs)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remote_database_importer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leon Vogt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-config
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.9'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: colorize
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.8'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.8'
|
55
41
|
description: Dump remote databases and import it locally. At the moment only Postgres
|
56
42
|
databases are supported
|
57
43
|
email:
|
@@ -70,6 +56,7 @@ files:
|
|
70
56
|
- Rakefile
|
71
57
|
- lib/railtie.rb
|
72
58
|
- lib/remote_database_importer.rb
|
59
|
+
- lib/remote_database_importer/colorize.rb
|
73
60
|
- lib/remote_database_importer/config.rb
|
74
61
|
- lib/remote_database_importer/operation.rb
|
75
62
|
- lib/remote_database_importer/version.rb
|