uff_db_loader 2.0.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/configuration.rb +12 -1
- data/lib/uff_db_loader/mysql.rb +1 -1
- data/lib/uff_db_loader/postgresql.rb +1 -1
- data/lib/uff_db_loader/tasks/uff_db_loader.rake +8 -0
- data/lib/uff_db_loader/templates/uff_db_loader_initializer.erb +1 -0
- data/lib/uff_db_loader/version.rb +1 -1
- data/lib/uff_db_loader.rb +15 -5
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a2c7c42ed0513c36d938f46d9346c462ec22e978ed234f519d9825eb8701c8f
|
4
|
+
data.tar.gz: 6036d5f67b2447a2e747b6b242d4a69a96730c57f5ce45a01d618d4af91085a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e843d03ce1e569f9bd03a84ec9f95321dd34f08f23ad3897392343cffb4779cc91c9d44bb6b1634c94ef6b763177cefe2489c64207bb31cbf20140e73610fa82
|
7
|
+
data.tar.gz: 25d012b2ba4e6bfbc066b074a95523f8782c9da9a345ad0326014c8b7da87f343452966bfa7a217c3e1783ace8c90a82e5a19777be87ce7b89b69f7fb79cd063
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
$ gem install uff_db_loader
|
22
22
|
|
23
|
-
Run the installation script:
|
23
|
+
Run the installation script:
|
24
24
|
|
25
25
|
$ bin/rails uff_db_loader:install
|
26
26
|
|
@@ -37,6 +37,7 @@ UffDbLoader.configure do |config|
|
|
37
37
|
config.app_name = 'my_app' # Defaults to the Rails app name
|
38
38
|
config.dumps_directory = '/path/to/dumps' # Defaults to Rails.root.join('dumps')
|
39
39
|
config.database_config_file = 'path/to/database.yml' # Defaults to Rails.root.join('config', 'database.yml')
|
40
|
+
config.container_name = ->(app_name, environment) { "#{app_name}_#{environment}_custom_suffix" } # Defaults to "#{app_name}_#{environment}_db". It accepts a static string too.
|
40
41
|
end
|
41
42
|
```
|
42
43
|
For example in a file like `config/initializers/uff_db_loader.rb`.
|
@@ -50,6 +51,7 @@ Make sure the app's database user has the superuser role. Otherwise the app will
|
|
50
51
|
- `dump`: Dumps a remote database from a selected environment and downloads it
|
51
52
|
- `restore`: Restores a downloaded dump into a local database
|
52
53
|
- `switch`: Selects a restored local database to use
|
54
|
+
- `switch_to_default`: Switches database back to the default development database
|
53
55
|
- `load`: Dumps a remote database from a selected environment and downloads it then restores and selects the database
|
54
56
|
- `prune`: Delete all downloaded db dumps and removes all databases created by UffDbLoader
|
55
57
|
|
data/lib/configuration.rb
CHANGED
@@ -5,7 +5,17 @@ require "uff_db_loader/mysql"
|
|
5
5
|
|
6
6
|
module UffDbLoader
|
7
7
|
class Configuration
|
8
|
-
attr_accessor
|
8
|
+
attr_accessor(
|
9
|
+
:environments,
|
10
|
+
:ssh_host,
|
11
|
+
:ssh_user,
|
12
|
+
:db_name,
|
13
|
+
:db_system,
|
14
|
+
:app_name,
|
15
|
+
:dumps_directory,
|
16
|
+
:database_config_file,
|
17
|
+
:container_name
|
18
|
+
)
|
9
19
|
|
10
20
|
def initialize
|
11
21
|
@environments = nil
|
@@ -16,6 +26,7 @@ module UffDbLoader
|
|
16
26
|
@app_name = Dir.pwd.split("/").last
|
17
27
|
@dumps_directory = File.join(Dir.pwd, "dumps")
|
18
28
|
@database_config_file = File.join(Dir.pwd, "config", "database.yml")
|
29
|
+
@container_name = nil
|
19
30
|
end
|
20
31
|
|
21
32
|
def database
|
data/lib/uff_db_loader/mysql.rb
CHANGED
@@ -7,7 +7,7 @@ module UffDbLoader
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.dump_command_template
|
10
|
-
"ssh %user%@%host% \"docker exec -i %
|
10
|
+
"ssh %user%@%host% \"docker exec -i %container_name% sh -c 'exec mysqldump --opt --no-tablespaces -uroot -p\"\\$MYSQL_ROOT_PASSWORD\" %database%'\" > %target%"
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.restore_command(database_name, result_file_path)
|
@@ -7,7 +7,7 @@ module UffDbLoader
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.dump_command_template
|
10
|
-
"ssh %user%@%host% \"docker exec -i %
|
10
|
+
"ssh %user%@%host% \"docker exec -i %container_name% sh -c 'exec pg_dump --username \\$POSTGRES_USER --clean --no-owner --no-acl --format=c %database%'\" > %target%"
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.restore_command(database_name, result_file_path)
|
@@ -79,4 +79,12 @@ namespace :uff_db_loader do
|
|
79
79
|
puts "Removing dumps from #{UffDbLoader.config.dumps_directory}"
|
80
80
|
UffDbLoader.prune_dump_directory
|
81
81
|
end
|
82
|
+
|
83
|
+
desc "Switch back to default database"
|
84
|
+
task switch_to_default: :environment do
|
85
|
+
UffDbLoader.remember_database_name("")
|
86
|
+
UffDbLoader.restart_rails_server
|
87
|
+
|
88
|
+
puts "♻️ Restarted rails server with default database."
|
89
|
+
end
|
82
90
|
end
|
@@ -14,5 +14,6 @@ if defined?(UffDbLoader)
|
|
14
14
|
# config.app_name = 'my_app' # Defaults to the Rails app name
|
15
15
|
# config.dumps_directory = '/path/to/dumps' # Defaults to Rails.root.join('dumps')
|
16
16
|
# config.database_config_file = 'path/to/database.yml' # Defaults to Rails.root.join('config', 'database.yml')
|
17
|
+
# config.container_name = ->(app_name, environment) { "#{app_name}_#{environment}_custom_suffix" } # Defaults to "#{app_name}_#{environment}_db". It accepts a static string too.
|
17
18
|
end
|
18
19
|
end
|
data/lib/uff_db_loader.rb
CHANGED
@@ -108,14 +108,14 @@ module UffDbLoader
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def initializer_path
|
111
|
-
|
111
|
+
Rails.root.join("config", "initializers", "uff_db_loader.rb")
|
112
112
|
end
|
113
113
|
|
114
114
|
def create_initializer
|
115
|
-
template = ERB.new(File.read(
|
115
|
+
template = ERB.new(File.read(initializer_template_path))
|
116
116
|
|
117
117
|
File.write(
|
118
|
-
|
118
|
+
initializer_path,
|
119
119
|
template.result_with_hash(
|
120
120
|
used_database_system: used_database_system,
|
121
121
|
environments: environments
|
@@ -125,6 +125,17 @@ module UffDbLoader
|
|
125
125
|
|
126
126
|
private
|
127
127
|
|
128
|
+
def container_name(environment)
|
129
|
+
return "#{config.app_name}_#{environment}_db" if config.container_name.blank?
|
130
|
+
return config.container_name unless config.container_name.respond_to? :call
|
131
|
+
|
132
|
+
config.container_name.call(config.app_name, environment)
|
133
|
+
end
|
134
|
+
|
135
|
+
def initializer_template_path
|
136
|
+
File.join(__dir__, "uff_db_loader", "templates", "uff_db_loader_initializer.erb")
|
137
|
+
end
|
138
|
+
|
128
139
|
def database_name_file
|
129
140
|
Rails.root.join("tmp", "uff_db_loader_database_name")
|
130
141
|
end
|
@@ -140,12 +151,11 @@ module UffDbLoader
|
|
140
151
|
config
|
141
152
|
.database_system
|
142
153
|
.dump_command_template
|
143
|
-
.gsub("%environment%", environment)
|
144
154
|
.gsub("%host%", config.ssh_host)
|
145
155
|
.gsub("%user%", config.ssh_user)
|
146
156
|
.gsub("%database%", config.database)
|
147
157
|
.gsub("%target%", target)
|
148
|
-
.gsub("%
|
158
|
+
.gsub("%container_name%", container_name(environment))
|
149
159
|
end
|
150
160
|
|
151
161
|
def restore_command(database_name, result_file_path)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uff_db_loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Hellwig
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2023-02-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: tty-prompt
|
@@ -88,9 +88,9 @@ licenses:
|
|
88
88
|
- MIT
|
89
89
|
metadata:
|
90
90
|
bug_tracker_uri: https://github.com/rmehner/uff_db_loader/issues
|
91
|
-
changelog_uri: https://github.com/rmehner/uff_db_loader/releases/tag/2.0
|
91
|
+
changelog_uri: https://github.com/rmehner/uff_db_loader/releases/tag/2.2.0
|
92
92
|
homepage_uri: https://github.com/rmehner/uff_db_loader
|
93
|
-
source_code_uri: https://github.com/rmehner/uff_db_loader/tree/2.0
|
93
|
+
source_code_uri: https://github.com/rmehner/uff_db_loader/tree/2.2.0
|
94
94
|
post_install_message: Please run `bin/rails uff_db_loader:install` to complete the
|
95
95
|
installation.
|
96
96
|
rdoc_options: []
|
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: '0'
|
109
109
|
requirements: []
|
110
|
-
rubygems_version: 3.
|
110
|
+
rubygems_version: 3.4.7
|
111
111
|
signing_key:
|
112
112
|
specification_version: 4
|
113
113
|
summary: Allows to dump, download and restore databases from docker servers.
|