j-cap-recipes 0.0.17 → 0.0.18
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 +4 -0
- data/Gemfile.lock +12 -14
- data/lib/j-cap-recipes/tasks/database.rake +1 -0
- data/lib/j-cap-recipes/tasks/db.rake +93 -21
- data/lib/j-cap-recipes/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d80bea1e89b26980f0b32a653e182c71e050aff0
|
4
|
+
data.tar.gz: a8d06234ff8e44182e449171f26e193ae4d0cfa5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7ef723ec30da2d92f0dbd01ebcc0c2fb56be446c71e40e6156aee5066329d76eef3d069247fbddf66ba794b6093262585ab07a609039331fdf15d278eecf25c
|
7
|
+
data.tar.gz: 713eebf975e826769b0dcc5808133b6f9c3633e76135c67e3832682460255d3e834f878900dd2b6440f53ff86b0c4c9fcf7b2e06f60fa7284b47fa197ad5a5d9
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,27 +1,25 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
j-cap-recipes (0.0.
|
4
|
+
j-cap-recipes (0.0.18)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
capistrano (3.
|
9
|
+
capistrano (3.4.0)
|
10
10
|
i18n
|
11
11
|
rake (>= 10.0.0)
|
12
|
-
sshkit (
|
13
|
-
|
14
|
-
|
12
|
+
sshkit (~> 1.3)
|
13
|
+
colorize (0.7.5)
|
14
|
+
i18n (0.7.0)
|
15
|
+
net-scp (1.2.1)
|
15
16
|
net-ssh (>= 2.6.5)
|
16
|
-
net-ssh (2.
|
17
|
-
rake (10.
|
18
|
-
sshkit (1.1
|
19
|
-
|
20
|
-
net-
|
21
|
-
|
22
|
-
term-ansicolor (1.2.2)
|
23
|
-
tins (~> 0.8)
|
24
|
-
tins (0.12.0)
|
17
|
+
net-ssh (2.9.2)
|
18
|
+
rake (10.4.2)
|
19
|
+
sshkit (1.7.1)
|
20
|
+
colorize (>= 0.7.0)
|
21
|
+
net-scp (>= 1.1.2)
|
22
|
+
net-ssh (>= 2.8.0)
|
25
23
|
|
26
24
|
PLATFORMS
|
27
25
|
ruby
|
@@ -2,10 +2,10 @@ namespace :db do
|
|
2
2
|
desc 'PG backup'
|
3
3
|
task backup: [:environment, :load_config] do
|
4
4
|
#stamp the filename
|
5
|
-
|
5
|
+
dateformat = ENV['date-format'] || '%Y-%m-%d_%H-%M-%S'
|
6
|
+
datestamp = Time.now.strftime(dateformat)
|
6
7
|
|
7
8
|
#create backups folder
|
8
|
-
backup_dir = ENV['backup-path'] || Rails.root.join('db', 'backups')
|
9
9
|
mkdir_p(backup_dir)
|
10
10
|
|
11
11
|
config = ActiveRecord::Base.connection_config
|
@@ -13,13 +13,13 @@ namespace :db do
|
|
13
13
|
backup_file = File.join(backup_dir, "#{database_name}_#{datestamp}.dump")
|
14
14
|
|
15
15
|
#dump the backup and zip it up
|
16
|
-
dump_command
|
17
|
-
dump_command += postgres_auth_options(config)
|
18
|
-
dump_command += " > #{backup_file}"
|
16
|
+
sh dump_command(config, database_name, backup_file)
|
19
17
|
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
latest_file_name = File.join(backup_dir, "#{database_name}_latest.dump")
|
19
|
+
if File.exist? latest_file_name
|
20
|
+
rm latest_file_name
|
21
|
+
end
|
22
|
+
safe_ln backup_file, latest_file_name
|
23
23
|
end
|
24
24
|
|
25
25
|
desc 'PG restore from the last backup file'
|
@@ -33,13 +33,13 @@ namespace :db do
|
|
33
33
|
execute_task!('db:drop')
|
34
34
|
execute_task!('db:create')
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
restore_command += ' -O -c'
|
39
|
-
sh "#{restore_command} || echo 'done'"
|
36
|
+
command = db_restore_command(config, database_name, backup_file)
|
37
|
+
sh "#{command} || echo 'done'"
|
40
38
|
end
|
41
39
|
|
42
40
|
task :kill_postgres_connections => :environment do
|
41
|
+
config = ActiveRecord::Base.connection_config
|
42
|
+
next if config[:adapter] != "postgresql"
|
43
43
|
db_name = ActiveRecord::Base.connection.current_database
|
44
44
|
pid_column_name = if ActiveRecord::Base.connection.send(:postgresql_version) > 90200
|
45
45
|
'pid'
|
@@ -61,17 +61,89 @@ namespace :db do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
|
64
|
+
desc 'Clean up old dumps'
|
65
|
+
task :cleanup do
|
66
|
+
dumps = FileList.new(File.join(backup_dir, '*.dump')).exclude(/_latest.dump$/)
|
67
|
+
|
68
|
+
if keep_versions > 0 && dumps.count >= keep_versions
|
69
|
+
puts "Keep #{keep_versions} dumps"
|
70
|
+
files = (dumps - dumps.last(keep_versions))
|
71
|
+
if files.any?
|
72
|
+
files.each do |f|
|
73
|
+
rm_r f
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
65
77
|
|
66
|
-
|
67
|
-
|
68
|
-
|
78
|
+
end
|
79
|
+
|
80
|
+
def backup_dir
|
81
|
+
@_backup_dir ||= ENV['backup-path'] || Rails.root.join('db', 'backups')
|
82
|
+
end
|
83
|
+
|
84
|
+
def keep_versions
|
85
|
+
@_keep_versions ||= ENV['ROTATE'].to_i
|
86
|
+
end
|
87
|
+
|
88
|
+
def postgres_dump_command(config, database_name, backup_file)
|
89
|
+
result = "#{postgres_password(config)} pg_dump #{database_name} -w -F c"
|
90
|
+
result += postgres_auth_options(config)
|
91
|
+
result + " > #{backup_file}"
|
92
|
+
end
|
93
|
+
|
94
|
+
def mysql_dump_command(config, database_name, backup_file)
|
95
|
+
result = "mysqldump #{database_name} "
|
96
|
+
result += mysql_auth_options(config)
|
97
|
+
result + " > #{backup_file}"
|
98
|
+
end
|
99
|
+
|
100
|
+
def dump_command(config, database_name, backup_file)
|
101
|
+
case config[:adapter]
|
102
|
+
when /mysql/
|
103
|
+
mysql_dump_command(config, database_name, backup_file)
|
104
|
+
when 'postgresql', 'pg'
|
105
|
+
postgres_dump_command(config, database_name, backup_file)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def db_restore_command(config, database_name, backup_file)
|
110
|
+
case config[:adapter]
|
111
|
+
when /mysql/
|
112
|
+
mysql_restore_command(config, database_name, backup_file)
|
113
|
+
when 'postgresql', 'pg'
|
114
|
+
postgres_restore_command(config, database_name, backup_file)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def postgres_restore_command(config, database_name, backup_file)
|
119
|
+
result = "#{postgres_password(config)} pg_restore -d #{database_name} -F c -w #{backup_file}"
|
120
|
+
result += postgres_auth_options(config)
|
121
|
+
result + ' -O -c'
|
122
|
+
end
|
123
|
+
|
124
|
+
def mysql_restore_command(config, database_name, backup_file)
|
125
|
+
"mysql #{database_name} #{mysql_auth_options(config)} < #{backup_file}"
|
126
|
+
end
|
127
|
+
|
128
|
+
def postgres_password(config)
|
129
|
+
"PGPASSWORD='#{config[:password]}'" if config[:password].present?
|
130
|
+
end
|
131
|
+
|
132
|
+
def postgres_auth_options(config)
|
133
|
+
command_options = ''
|
134
|
+
command_options += " -h #{config[:host]}" if config[:host].present?
|
135
|
+
command_options += " -U #{config[:username]}" if config[:username].present?
|
136
|
+
command_options
|
137
|
+
end
|
138
|
+
|
139
|
+
def mysql_auth_options(config)
|
140
|
+
command_options = ''
|
141
|
+
command_options += "--password='#{config[:password]}'" if config[:password].present?
|
142
|
+
command_options += " -h #{config[:host]}" if config[:host].present?
|
143
|
+
command_options += " -u #{config[:username]}" if config[:username].present?
|
144
|
+
command_options
|
145
|
+
end
|
69
146
|
|
70
|
-
def postgres_auth_options(config)
|
71
|
-
command_options = ''
|
72
|
-
command_options += " -h #{config[:hostname]}" if config[:hostname].present?
|
73
|
-
command_options += " -U #{config[:username]}" if config[:username].present?
|
74
|
-
command_options
|
75
147
|
end
|
76
148
|
|
77
149
|
#TODO: Use setting to get S3 credentials
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: j-cap-recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Nikitochkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
requirements: []
|
132
132
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.4.
|
133
|
+
rubygems_version: 2.4.6
|
134
134
|
signing_key:
|
135
135
|
specification_version: 4
|
136
136
|
summary: Capistrano 3 recipes for nginx, monit, rails log, setup, unicorn
|