dumpman 1.2.7 → 1.3.0
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/.gitignore +1 -0
- data/README.md +13 -3
- data/Rakefile +0 -1
- data/dumpman.gemspec +0 -1
- data/lib/dumpman.rb +1 -9
- data/lib/dumpman/adapters/mysql.rb +2 -2
- data/lib/dumpman/adapters/pg.rb +2 -2
- data/lib/dumpman/comandor.rb +0 -23
- data/lib/dumpman/fetcher.rb +2 -2
- data/lib/dumpman/version.rb +1 -1
- data/lib/tasks/db.rake +1 -14
- metadata +3 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d345a9992461b65c538df3ae71a8f05a5e638974736a9502058ed952b99c80b4
|
4
|
+
data.tar.gz: 39166bd9c4a97d9e6240822a14479f93526cd1ccf303497714cb98cfce1713ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 166f605b6b46744c70abd551ffda4226656fb16c2d4b2ac0286a6619518e4ad724ee2064f31e3ab2d0bf502a74c2e21d09c5aeaae8a3011e23a03557bd8aaa10
|
7
|
+
data.tar.gz: 6ab0e4d3b452fe9763ba7b51febbed1d750694a9ac79e30853796b8037d02f74c91c18935c61acccde85e5d6279cfe3a983ba282710b4dc85cd20023601940a7
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
[](https://badge.fury.io/rb/dumpman)
|
1
2
|
[](https://travis-ci.org/skcc321/dumpman)
|
2
3
|
[](https://codeclimate.com/github/skcc321/dumpman/maintainability)
|
3
4
|
[](https://codeclimate.com/github/skcc321/dumpman/test_coverage)
|
@@ -5,6 +6,15 @@
|
|
5
6
|
# Dumpman
|
6
7
|
Dumpman gem is what you need if you have application somewhere and need to dump your DB download it and up that dump localy!
|
7
8
|
|
9
|
+
### use case:
|
10
|
+
You have staging OR production server with running rails app on it.
|
11
|
+
|
12
|
+
For some reason you need DB dump from that server.
|
13
|
+
|
14
|
+
What you can do?
|
15
|
+
- Solution 1: connect to that server, make dump via CLI, download it, extract it on your loacl machine
|
16
|
+
- Solution 2: install this gem and run ```bash rake db:prod:up``` and that's it.
|
17
|
+
|
8
18
|

|
9
19
|
|
10
20
|
## Installation
|
@@ -12,7 +22,7 @@ Dumpman gem is what you need if you have application somewhere and need to dump
|
|
12
22
|
Add this line to your application's Gemfile:
|
13
23
|
|
14
24
|
```ruby
|
15
|
-
gem 'dumpman'
|
25
|
+
gem 'dumpman'
|
16
26
|
```
|
17
27
|
|
18
28
|
Then execute:
|
@@ -26,7 +36,7 @@ Or install it yourself as:
|
|
26
36
|
Generate default config:
|
27
37
|
|
28
38
|
$ rails g dumpman
|
29
|
-
|
39
|
+
|
30
40
|
it will create file app/config/initializers/dumpman.rb
|
31
41
|
```ruby
|
32
42
|
Dumpman.setup do
|
@@ -57,7 +67,7 @@ Update app/config/initializers/dumpman.rb with propper settings.
|
|
57
67
|
|
58
68
|
Now you are able to use awesome commands:
|
59
69
|
|
60
|
-
$ rake db:prod:up
|
70
|
+
$ rake db:prod:up # makes db dump on that server, compreses it, downloads, extracts localy
|
61
71
|
$ rake db:stage:up
|
62
72
|
$ rake db:qa:up
|
63
73
|
...
|
data/Rakefile
CHANGED
data/dumpman.gemspec
CHANGED
@@ -31,7 +31,6 @@ Gem::Specification.new do |spec|
|
|
31
31
|
|
32
32
|
spec.add_dependency 'rails', '>= 4.2.8'
|
33
33
|
spec.add_dependency 'rake', '>= 12.1.0'
|
34
|
-
spec.add_dependency 'rubyzip', '>= 1.2.1'
|
35
34
|
|
36
35
|
spec.add_development_dependency 'bundler', '>= 1.15'
|
37
36
|
spec.add_development_dependency 'mysql2'
|
data/lib/dumpman.rb
CHANGED
@@ -13,7 +13,7 @@ module Dumpman
|
|
13
13
|
mattr_accessor :connections
|
14
14
|
|
15
15
|
@@dump_folder = '.'
|
16
|
-
@@dump_file_name = 'dumpman.sql'
|
16
|
+
@@dump_file_name = 'dumpman.sql.gz'
|
17
17
|
@@connections = []
|
18
18
|
|
19
19
|
class << self
|
@@ -44,13 +44,5 @@ module Dumpman
|
|
44
44
|
def dump_file
|
45
45
|
File.join(dump_folder, dump_file_name)
|
46
46
|
end
|
47
|
-
|
48
|
-
def dump_zip_name
|
49
|
-
"#{dump_file_name}.zip"
|
50
|
-
end
|
51
|
-
|
52
|
-
def dump_zip
|
53
|
-
File.join(dump_folder, dump_zip_name)
|
54
|
-
end
|
55
47
|
end
|
56
48
|
end
|
@@ -2,11 +2,11 @@ module Dumpman
|
|
2
2
|
module Adapters
|
3
3
|
class Mysql < Base
|
4
4
|
def dump_cmd
|
5
|
-
"MYSQL_PWD='#{password}' mysqldump -u #{username} -h #{host} #{database} > #{Dumpman.dump_file}"
|
5
|
+
"MYSQL_PWD='#{password}' mysqldump -u #{username} -h #{host} #{database} | gzip -9 > #{Dumpman.dump_file}"
|
6
6
|
end
|
7
7
|
|
8
8
|
def restore_cmd
|
9
|
-
"MYSQL_PWD='#{password}' mysql -u #{username} -h #{host} #{database}
|
9
|
+
"gunzip < #{Dumpman.dump_file} | MYSQL_PWD='#{password}' mysql -u #{username} -h #{host} #{database}"
|
10
10
|
end
|
11
11
|
|
12
12
|
def drop_cmd
|
data/lib/dumpman/adapters/pg.rb
CHANGED
@@ -2,11 +2,11 @@ module Dumpman
|
|
2
2
|
module Adapters
|
3
3
|
class Pg < Base
|
4
4
|
def dump_cmd
|
5
|
-
"PGPASSWORD='#{password}' pg_dump -h #{host} --username '#{username}' --verbose --clean --no-owner --no-acl
|
5
|
+
"PGPASSWORD='#{password}' pg_dump -h #{host} --username '#{username}' --verbose --clean --no-owner --no-acl -Z4 -Fc #{database} > '#{Dumpman.dump_file}'"
|
6
6
|
end
|
7
7
|
|
8
8
|
def restore_cmd
|
9
|
-
"PGPASSWORD='#{password}' pg_restore -h #{host} --username '#{username}' --verbose --clean --no-owner --no-acl -d #{database} '#{Dumpman.dump_file}'"
|
9
|
+
"PGPASSWORD='#{password}' pg_restore -h #{host} --username '#{username}' --verbose --clean --no-owner --no-acl -j 4 -d #{database} '#{Dumpman.dump_file}'"
|
10
10
|
end
|
11
11
|
|
12
12
|
def drop_cmd
|
data/lib/dumpman/comandor.rb
CHANGED
@@ -1,30 +1,7 @@
|
|
1
|
-
require "zip"
|
2
|
-
|
3
1
|
module Dumpman
|
4
2
|
module Commandor
|
5
3
|
extend self
|
6
4
|
|
7
|
-
def zip
|
8
|
-
# clean up from old dump
|
9
|
-
File.delete(Dumpman.dump_zip) if File.exists?(Dumpman.dump_zip)
|
10
|
-
|
11
|
-
Zip::File.open(Dumpman.dump_zip, Zip::File::CREATE) do |zipfile|
|
12
|
-
zipfile.add(Dumpman.dump_file_name, Dumpman.dump_folder + '/' + Dumpman.dump_file_name)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def unzip
|
17
|
-
# clean up from old zip
|
18
|
-
File.delete(Dumpman.dump_file) if File.exists?(Dumpman.dump_file)
|
19
|
-
|
20
|
-
Zip::File.open(Dumpman.dump_zip) do |zip_file|
|
21
|
-
zip_file.each do |entry|
|
22
|
-
puts "Extracting #{entry.name}"
|
23
|
-
entry.extract(Dumpman.dump_file)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
5
|
def dump
|
29
6
|
Dumpman::Database.dump
|
30
7
|
end
|
data/lib/dumpman/fetcher.rb
CHANGED
@@ -19,11 +19,11 @@ module Dumpman
|
|
19
19
|
private
|
20
20
|
|
21
21
|
def compress_dump_remotely
|
22
|
-
"ssh #{ssh_opts} #{ssh_cmd} 'cd #{app_path} && bash --login -c \"RAILS_ENV=#{app_env} bundle exec rake db:
|
22
|
+
"ssh #{ssh_opts} #{ssh_cmd} 'cd #{app_path} && bash --login -c \"RAILS_ENV=#{app_env} bundle exec rake db:dump\"'"
|
23
23
|
end
|
24
24
|
|
25
25
|
def fetch_dump_to_local
|
26
|
-
"scp #{ssh_opts} #{ssh_cmd}:#{app_path}/#{Dumpman.
|
26
|
+
"scp #{ssh_opts} #{ssh_cmd}:#{app_path}/#{Dumpman.dump_file_name} #{Dumpman.dump_folder}/"
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
data/lib/dumpman/version.rb
CHANGED
data/lib/tasks/db.rake
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'zip'
|
2
1
|
require 'dumpman'
|
3
2
|
|
4
3
|
namespace :db do
|
@@ -18,23 +17,11 @@ namespace :db do
|
|
18
17
|
desc 'up LOCAL dump'
|
19
18
|
task :up => :environment do
|
20
19
|
Dumpman::Executor.rake(
|
21
|
-
:
|
20
|
+
:restore,
|
22
21
|
:migrate
|
23
22
|
)
|
24
23
|
end
|
25
24
|
|
26
|
-
desc 'zips the database'
|
27
|
-
task :compress => :environment do
|
28
|
-
Dumpman::Commandor.dump
|
29
|
-
Dumpman::Commandor.zip
|
30
|
-
end
|
31
|
-
|
32
|
-
desc 'unzips the database'
|
33
|
-
task :extract => :environment do
|
34
|
-
Dumpman::Commandor.unzip
|
35
|
-
Dumpman::Commandor.restore
|
36
|
-
end
|
37
|
-
|
38
25
|
desc 'dumps the database'
|
39
26
|
task :dump => :environment do
|
40
27
|
Dumpman::Commandor.dump
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dumpman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rafael
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 12.1.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rubyzip
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 1.2.1
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 1.2.1
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: bundler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -345,8 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
345
331
|
- !ruby/object:Gem::Version
|
346
332
|
version: '0'
|
347
333
|
requirements: []
|
348
|
-
|
349
|
-
rubygems_version: 2.7.6
|
334
|
+
rubygems_version: 3.0.3
|
350
335
|
signing_key:
|
351
336
|
specification_version: 4
|
352
337
|
summary: gem for playing with dumps
|