capones_recipes 0.2.4 → 0.2.5
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.
- data/VERSION +1 -1
- data/capones_recipes.gemspec +1 -1
- data/lib/recipes/database/mysql.rb +66 -65
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/capones_recipes.gemspec
CHANGED
@@ -3,89 +3,90 @@
|
|
3
3
|
# Based on code from:
|
4
4
|
# * http://snippets.aktagon.com/snippets/20-Capistrano-2-task-for-backing-up-your-MySQL-production-database-before-each-deployment
|
5
5
|
# * http://www.martin-probst.com/blog/2007/11/20/mysql-backup-restore-task-for-capistrano/
|
6
|
+
Capistrano::Configuration.instance.load do
|
7
|
+
namespace :mysql do
|
8
|
+
task :backup, :roles => :import do
|
9
|
+
backup_dir ||= "#{deploy_to}/backups"
|
10
|
+
run "mkdir -p #{backup_dir}"
|
6
11
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
run "mkdir -p #{backup_dir}"
|
11
|
-
|
12
|
-
filename = "#{backup_dir}/#{application}.dump.#{Time.now.strftime('%Y-%m-%d_%H-%M')}.sql.bz2"
|
13
|
-
text = capture "cat #{deploy_to}/current/config/database.yml"
|
14
|
-
yaml = YAML::load(text)
|
12
|
+
filename = "#{backup_dir}/#{application}.dump.#{Time.now.strftime('%Y-%m-%d_%H-%M')}.sql.bz2"
|
13
|
+
text = capture "cat #{deploy_to}/current/config/database.yml"
|
14
|
+
yaml = YAML::load(text)
|
15
15
|
|
16
|
-
|
16
|
+
on_rollback { run "rm #{filename}" }
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
logger.info "Backing up to #{filename}..."
|
19
|
+
run "mysqldump -u #{yaml[rails_env]['username']} -p #{yaml[rails_env]['database']} -h #{yaml[rails_env]['host']}| bzip2 -c > #{filename}" do |ch, stream, out|
|
20
|
+
if out =~ /^Enter password:/
|
21
|
+
ch.send_data "#{yaml[rails_env]['password']}\n"
|
22
|
+
else
|
23
|
+
puts out
|
24
|
+
end
|
24
25
|
end
|
25
|
-
end
|
26
|
-
|
27
|
-
run "ln -nfs #{filename} #{backup_dir}/#{application}.latest"
|
28
|
-
|
29
|
-
logger.info "Backup successfull."
|
30
|
-
end
|
31
|
-
|
32
|
-
task :restore, :roles => :import do
|
33
|
-
backup_dir ||= "#{deploy_to}/backups"
|
34
26
|
|
35
|
-
|
36
|
-
text = capture "cat #{deploy_to}/current/config/database.yml"
|
37
|
-
yaml = YAML::load(text)
|
27
|
+
run "ln -nfs #{filename} #{backup_dir}/#{application}.latest"
|
38
28
|
|
39
|
-
|
40
|
-
run "bzip2 -d < #{filename} |mysql -u #{yaml[rails_env]['username']} -p#{yaml[rails_env]['password']} -h #{yaml[rails_env]['host']} #{yaml[rails_env]['database']}" do |ch, stream, out|
|
41
|
-
puts out
|
29
|
+
logger.info "Backup successfull."
|
42
30
|
end
|
43
|
-
|
44
|
-
logger.info "Restore successfull."
|
45
|
-
end
|
46
31
|
|
47
|
-
|
48
|
-
|
49
|
-
task :down, :roles => :app do
|
50
|
-
sync_dir ||= "#{deploy_to}/sync"
|
51
|
-
run "mkdir -p #{sync_dir}"
|
32
|
+
task :restore, :roles => :import do
|
33
|
+
backup_dir ||= "#{deploy_to}/backups"
|
52
34
|
|
53
|
-
filename = "#{
|
35
|
+
filename = "#{backup_dir}/#{application}.latest"
|
54
36
|
text = capture "cat #{deploy_to}/current/config/database.yml"
|
55
37
|
yaml = YAML::load(text)
|
56
|
-
on_rollback { delete filename }
|
57
38
|
|
58
|
-
|
59
|
-
run "
|
60
|
-
|
61
|
-
channel.send_data "#{yaml[rails_env]['password']}\n"
|
62
|
-
else
|
63
|
-
puts data
|
64
|
-
end
|
39
|
+
logger.info "Restoring from #{filename}..."
|
40
|
+
run "bzip2 -d < #{filename} |mysql -u #{yaml[rails_env]['username']} -p#{yaml[rails_env]['password']} -h #{yaml[rails_env]['host']} #{yaml[rails_env]['database']}" do |ch, stream, out|
|
41
|
+
puts out
|
65
42
|
end
|
66
43
|
|
67
|
-
|
68
|
-
|
44
|
+
logger.info "Restore successfull."
|
45
|
+
end
|
46
|
+
|
47
|
+
namespace :sync do
|
48
|
+
desc "Sync down the mysql db to local"
|
49
|
+
task :down, :roles => :app do
|
50
|
+
sync_dir ||= "#{deploy_to}/sync"
|
51
|
+
run "mkdir -p #{sync_dir}"
|
52
|
+
|
53
|
+
filename = "#{application}.dump.#{Time.now.strftime('%Y-%m-%d_%H-%M')}.sql.bz2"
|
54
|
+
text = capture "cat #{deploy_to}/current/config/database.yml"
|
55
|
+
yaml = YAML::load(text)
|
56
|
+
on_rollback { delete filename }
|
57
|
+
|
58
|
+
# Remote DB dump
|
59
|
+
run "mysqldump -u #{yaml[rails_env]['username']} -p #{yaml[rails_env]['database']} -h #{yaml[rails_env]['host']} | bzip2 -9 > #{sync_dir}/#{filename}" do |channel, stream, data|
|
60
|
+
if data =~ /^Enter password:/
|
61
|
+
channel.send_data "#{yaml[rails_env]['password']}\n"
|
62
|
+
else
|
63
|
+
puts data
|
64
|
+
end
|
65
|
+
end
|
69
66
|
|
70
|
-
|
67
|
+
# Download dump
|
68
|
+
download "#{sync_dir}/#{filename}", filename
|
71
69
|
|
72
|
-
|
73
|
-
username, password, database = database_config('development')
|
74
|
-
system "bzip2 -d -c #{filename} | mysql -u #{username} --password='#{password}' #{database}; rm -f #{filename}"
|
75
|
-
system "rake db:migrate"
|
70
|
+
run "rm #{sync_dir}/#{filename}"
|
76
71
|
|
77
|
-
|
78
|
-
|
72
|
+
# Local DB import
|
73
|
+
username, password, database = database_config('development')
|
74
|
+
system "bzip2 -d -c #{filename} | mysql -u #{username} --password='#{password}' #{database}; rm -f #{filename}"
|
75
|
+
system "rake db:migrate"
|
79
76
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
77
|
+
logger.important "sync database from the stage '#{stage}' to local finished"
|
78
|
+
end
|
79
|
+
|
80
|
+
#
|
81
|
+
# Reads the database credentials from the local config/database.yml file
|
82
|
+
# +db+ the name of the environment to get the credentials for
|
83
|
+
# Returns username, password, database
|
84
|
+
#
|
85
|
+
def database_config(db)
|
86
|
+
database = YAML::load_file('config/database.yml')
|
87
|
+
return database["#{db}"]['username'], database["#{db}"]['password'], database["#{db}"]['database']
|
88
|
+
end
|
88
89
|
end
|
89
90
|
end
|
90
|
-
|
91
91
|
end
|
92
|
+
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: capones_recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Roman Simecek
|
@@ -166,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
166
166
|
requirements:
|
167
167
|
- - ">="
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
hash: -
|
169
|
+
hash: -2800225073291337054
|
170
170
|
segments:
|
171
171
|
- 0
|
172
172
|
version: "0"
|