mina-data_sync 0.0.2 → 0.0.3
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/config/database.yml +38 -31
- data/config/deploy.rb +100 -48
- data/config_pg/database.yml +39 -0
- data/config_pg/deploy.rb +125 -0
- data/lib/mina/data_sync/defaults.rb +2 -3
- data/lib/mina/data_sync/helpers.rb +35 -46
- data/lib/mina/data_sync/tasks.rb +22 -18
- data/lib/mina/data_sync/version.rb +1 -1
- metadata +4 -5
- data/backup-2015-03-30.sql +0 -2845
- data/backup-2015-03-30.tar +0 -0
- data/backup.tar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e09278425980940ce64a951a1a39f5b55cf8cd0
|
4
|
+
data.tar.gz: aabf9d17edbe35492550ac3c87a75efd26a4fbb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a3cfbd6f79b31808ef15b9c6a54a33645668767c2410f7942f0ccc8f358eba32415ee2b02e962d885b75d41966ca5ed6cdc85e7a0ae9c2adeebf608921b1cfe
|
7
|
+
data.tar.gz: aef3a7b380aaeab56e2d43c24517d6e51782888db4ed2e7b0f094042a7c2656fc0f1c7ecc2b6661cf869432e71bbafff6cf1deb115e410cd0203deb5b7c66fef
|
data/config/database.yml
CHANGED
@@ -1,39 +1,46 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# MySQL. Versions 4.1 and 5.0 are recommended.
|
2
|
+
#
|
3
|
+
# Install the MYSQL driver
|
4
|
+
# gem install mysql2
|
5
|
+
#
|
6
|
+
# Ensure the MySQL gem is defined in your Gemfile
|
7
|
+
# gem 'mysql2'
|
8
|
+
#
|
9
|
+
# And be sure to use new-style password hashing:
|
10
|
+
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
|
11
|
+
development:
|
12
|
+
adapter: mysql2
|
3
13
|
encoding: utf8
|
14
|
+
database: psylog_development
|
4
15
|
pool: 5
|
5
|
-
username:
|
16
|
+
username: root
|
6
17
|
password:
|
7
|
-
host: localhost
|
8
|
-
|
9
|
-
rakovac: &rakovac
|
10
|
-
<<: *default
|
11
|
-
username: <%= ENV['PGSQL_USER'] %>
|
12
|
-
password: <%= ENV['PGSQL_PASSWORD'] %>
|
13
|
-
host: <%= ENV['PGSQL_HOST'] %>
|
14
|
-
port: <%= ENV['PGSQL_PORT'] %>
|
15
|
-
|
16
|
-
# development:
|
17
|
-
# adapter: mysql2
|
18
|
-
# encoding: utf8
|
19
|
-
# database: miramo_club_development
|
20
|
-
# pool: 5
|
21
|
-
# username: root
|
22
|
-
# password:
|
23
|
-
# host: localhost
|
24
|
-
|
25
|
-
development: &development
|
26
|
-
<<: *default
|
27
|
-
database: miramo_club_development
|
28
18
|
|
19
|
+
# Warning: The database defined as "test" will be erased and
|
20
|
+
# re-generated from your development database when you run "rake".
|
21
|
+
# Do not set this db to the same as development or production.
|
29
22
|
test:
|
30
|
-
|
31
|
-
|
23
|
+
adapter: mysql2
|
24
|
+
encoding: utf8
|
25
|
+
database: psylog_test
|
26
|
+
pool: 5
|
27
|
+
username: root
|
28
|
+
password:
|
32
29
|
|
33
|
-
production:
|
34
|
-
|
35
|
-
|
30
|
+
production:
|
31
|
+
host: localhost
|
32
|
+
adapter: mysql2
|
33
|
+
encoding: utf8
|
34
|
+
database: psylog_infinum_co
|
35
|
+
pool: 5
|
36
|
+
username: psylog_p
|
37
|
+
password: DzmKmmMw
|
36
38
|
|
37
39
|
staging:
|
38
|
-
|
39
|
-
|
40
|
+
host: localhost
|
41
|
+
adapter: mysql2
|
42
|
+
encoding: utf8
|
43
|
+
database: psylog_staging_infinum_co
|
44
|
+
pool: 5
|
45
|
+
username: psylog_s
|
46
|
+
password: uRfbBD1S
|
data/config/deploy.rb
CHANGED
@@ -4,9 +4,9 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'mina/bundler'
|
5
5
|
require 'mina/rails'
|
6
6
|
require 'mina/git'
|
7
|
-
require '
|
7
|
+
require 'mina/whenever' # uncomment if using whenever
|
8
8
|
require 'mina/data_sync'
|
9
|
-
|
9
|
+
|
10
10
|
|
11
11
|
# Setup project
|
12
12
|
# - mina production setup
|
@@ -17,53 +17,50 @@ require 'mina/data_sync'
|
|
17
17
|
# Pull data from production
|
18
18
|
# - mina production data:pull
|
19
19
|
|
20
|
-
set :repository, 'git@bitbucket.org:infinum_hr/
|
21
|
-
set :
|
22
|
-
set :port,
|
23
|
-
set :user, 'staging'
|
24
|
-
set :domain, 'miramo.infinum.co'
|
20
|
+
set :repository, 'git@bitbucket.org:infinum_hr/web_psylog.git'
|
21
|
+
set :user, 'legacy'
|
22
|
+
set :port, 22219
|
25
23
|
|
26
24
|
task :production do
|
27
|
-
set :
|
25
|
+
set :domain, 'psylog.eu'
|
26
|
+
set :deploy_to, '/home/legacy/www/p/psylog.eu'
|
28
27
|
set :rails_env, 'production'
|
29
28
|
set :branch, 'master'
|
30
|
-
set :bundle_withouts, 'development:test:staging'
|
31
29
|
end
|
32
30
|
|
33
|
-
# If you have
|
34
31
|
task :staging do
|
35
|
-
set :domain, '
|
36
|
-
set :deploy_to, '/home/
|
32
|
+
set :domain, 'psylog-staging.infinum.co'
|
33
|
+
set :deploy_to, '/home/legacy/www/p/psylog-staging.infinum.co'
|
37
34
|
set :rails_env, 'staging'
|
38
|
-
set :branch, '
|
39
|
-
set :bundle_withouts, 'development:test:production'
|
35
|
+
set :branch, 'master'
|
40
36
|
end
|
41
37
|
|
42
|
-
|
43
|
-
set :rails_env, 'development'
|
44
|
-
end
|
38
|
+
|
45
39
|
##################################################################################
|
46
40
|
########################## DO NOT EDIT THE CODE BELOW ############################
|
47
41
|
##################################################################################
|
48
42
|
|
49
|
-
|
50
|
-
set :shared_paths, ['log']
|
43
|
+
set :shared_paths, ['log', 'pids']
|
51
44
|
|
52
45
|
task :deploy => :stages do
|
53
46
|
deploy do
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
47
|
+
to :default do
|
48
|
+
invoke :'git:clone'
|
49
|
+
invoke :'deploy:link_shared_paths'
|
50
|
+
invoke :'bundle:install'
|
51
|
+
invoke :'rails:db_migrate'
|
52
|
+
invoke :'rails:assets_precompile'
|
53
|
+
invoke :'deploy:cleanup'
|
54
|
+
end
|
60
55
|
|
61
56
|
to :launch do
|
62
57
|
# Capistrano to Mina Fix, symlink system to shared
|
63
58
|
queue! %[echo "-----> Symlink system to shared"]
|
64
59
|
queue! %[ln -nFs #{deploy_to}/shared/system #{deploy_to}/#{current_path}/public/system]
|
65
60
|
|
66
|
-
|
61
|
+
queue %[echo "-----> Restarting jobs"]
|
62
|
+
queue "RAILS_ENV=#{rails_env} #{deploy_to}/#{current_path}/bin/delayed_job restart --pid-dir=pids"
|
63
|
+
|
67
64
|
invoke :restart_application
|
68
65
|
end
|
69
66
|
end
|
@@ -81,6 +78,38 @@ end
|
|
81
78
|
task :setup => :stages do
|
82
79
|
queue! %[mkdir -p "#{deploy_to}/shared/log"]
|
83
80
|
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/log"]
|
81
|
+
|
82
|
+
queue! %[mkdir -p "#{deploy_to}/shared/system"]
|
83
|
+
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/system"]
|
84
|
+
end
|
85
|
+
|
86
|
+
# Import dummy data
|
87
|
+
task :import => :stages do
|
88
|
+
queue "bundle exec rake import:effects"
|
89
|
+
queue "bundle exec rake import:lifestyles"
|
90
|
+
queue "bundle exec rake import:medications"
|
91
|
+
queue "bundle exec rake import:users"
|
92
|
+
queue "bundle exec rake import:friendships"
|
93
|
+
end
|
94
|
+
|
95
|
+
task :import_effects => :stages do
|
96
|
+
queue "bundle exec rake import:effects"
|
97
|
+
end
|
98
|
+
|
99
|
+
task :import_lifestyles => :stages do
|
100
|
+
queue "bundle exec rake import:lifestyles"
|
101
|
+
end
|
102
|
+
|
103
|
+
task :import_medications => :stages do
|
104
|
+
queue "bundle exec rake import:medications"
|
105
|
+
end
|
106
|
+
|
107
|
+
task :import_users => :stages do
|
108
|
+
queue "bundle exec rake import:users"
|
109
|
+
end
|
110
|
+
|
111
|
+
task :import_friendships => :stages do
|
112
|
+
queue "bundle exec rake import:friendships"
|
84
113
|
end
|
85
114
|
|
86
115
|
# Tail log from server
|
@@ -95,31 +124,54 @@ task :restart_application do
|
|
95
124
|
queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
|
96
125
|
end
|
97
126
|
|
98
|
-
|
99
|
-
|
100
|
-
|
127
|
+
# Ping application
|
128
|
+
task :ping_application do
|
129
|
+
queue %[echo "-----> Ping domain"]
|
130
|
+
queue %[curl -s #{domain} > /dev/null]
|
131
|
+
end
|
132
|
+
|
133
|
+
# Stop delayed job
|
134
|
+
task :stop_delayed_job do
|
135
|
+
queue! %[echo "-----> Stop delayed job"]
|
136
|
+
queue! %[cd #{deploy_to}/#{current_path} ; RAILS_ENV=#{rails_env} bin/delayed_job stop]
|
137
|
+
end
|
138
|
+
|
139
|
+
# Start delayed job
|
140
|
+
task :start_delayed_job do
|
141
|
+
queue! %[echo "-----> Start delayed job"]
|
142
|
+
queue! %[cd #{deploy_to}/#{current_path} ; mkdir -p tmp/pids ; RAILS_ENV=#{rails_env} bin/delayed_job start]
|
143
|
+
end
|
101
144
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
# BASH
|
145
|
+
# Restart delayed job
|
146
|
+
task :restart_delayed_job do
|
147
|
+
queue! %[echo "-----> Restart delayed job"]
|
148
|
+
queue! %[cd #{deploy_to}/#{current_path} ; RAILS_ENV=#{rails_env} bin/delayed_job restart]
|
149
|
+
end
|
108
150
|
|
151
|
+
# Sync database
|
152
|
+
RYAML = <<-BASH
|
153
|
+
function ryaml {
|
154
|
+
ruby -ryaml -e 'puts ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[key] }' "$@"
|
155
|
+
};
|
156
|
+
BASH
|
157
|
+
|
158
|
+
namespace :data do
|
109
159
|
task :pull => :stages do
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
queue! "gunzip -f dump.sql.gz"
|
121
|
-
queue! "#{RYAML} mysql --verbose --user=$(ryaml config/database.yml development username) --password=$(ryaml config/database.yml development password) $(ryaml config/database.yml development database) < dump.sql"
|
122
|
-
queue! "rm dump.sql"
|
160
|
+
isolate do
|
161
|
+
queue RYAML
|
162
|
+
queue "HOST=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} host)"
|
163
|
+
queue "DATABASE=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} database)"
|
164
|
+
queue "USERNAME=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} username)"
|
165
|
+
queue "PASSWORD=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} password)"
|
166
|
+
queue "mysqldump $DATABASE --host=$HOST --user=$USERNAME --password=$PASSWORD > #{deploy_to}/dump.sql"
|
167
|
+
queue "gzip -f #{deploy_to}/dump.sql"
|
168
|
+
|
169
|
+
mina_cleanup!
|
123
170
|
end
|
171
|
+
|
172
|
+
%x[scp #{user}@#{domain}:#{deploy_to}/dump.sql.gz .]
|
173
|
+
%x[gunzip -f dump.sql.gz]
|
174
|
+
%x[#{RYAML} mysql --verbose --user=$(ryaml config/database.yml development username) --password=$(ryaml config/database.yml development password) $(ryaml config/database.yml development database) < dump.sql]
|
175
|
+
%x[rm dump.sql]
|
124
176
|
end
|
125
177
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
default: &default
|
2
|
+
adapter: postgresql
|
3
|
+
encoding: utf8
|
4
|
+
pool: 5
|
5
|
+
username: postgres
|
6
|
+
password:
|
7
|
+
host: localhost
|
8
|
+
|
9
|
+
rakovac: &rakovac
|
10
|
+
<<: *default
|
11
|
+
username: <%= ENV['PGSQL_USER'] %>
|
12
|
+
password: <%= ENV['PGSQL_PASSWORD'] %>
|
13
|
+
host: <%= ENV['PGSQL_HOST'] %>
|
14
|
+
port: <%= ENV['PGSQL_PORT'] %>
|
15
|
+
|
16
|
+
# development:
|
17
|
+
# adapter: mysql2
|
18
|
+
# encoding: utf8
|
19
|
+
# database: miramo_club_development
|
20
|
+
# pool: 5
|
21
|
+
# username: root
|
22
|
+
# password:
|
23
|
+
# host: localhost
|
24
|
+
|
25
|
+
development: &development
|
26
|
+
<<: *default
|
27
|
+
database: miramo_club_development
|
28
|
+
|
29
|
+
test:
|
30
|
+
<<: *default
|
31
|
+
database: miramo_club_test
|
32
|
+
|
33
|
+
production: &production
|
34
|
+
<<: *rakovac
|
35
|
+
database: miramo_infinum_co
|
36
|
+
|
37
|
+
staging:
|
38
|
+
<<: *rakovac
|
39
|
+
database: miramo_staging_infinum_co
|
data/config_pg/deploy.rb
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
lib = File.expand_path('../../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
require 'mina/bundler'
|
5
|
+
require 'mina/rails'
|
6
|
+
require 'mina/git'
|
7
|
+
require 'pry'
|
8
|
+
require 'mina/data_sync'
|
9
|
+
# require 'mina/whenever' # uncomment if using whenever
|
10
|
+
|
11
|
+
# Setup project
|
12
|
+
# - mina production setup
|
13
|
+
# Deploy project
|
14
|
+
# - mina production deploy
|
15
|
+
# Tail log from project
|
16
|
+
# - mina prodution log
|
17
|
+
# Pull data from production
|
18
|
+
# - mina production data:pull
|
19
|
+
|
20
|
+
set :repository, 'git@bitbucket.org:infinum_hr/web_miramoclub.git'
|
21
|
+
set :local_backup_path, '/Users/stef/dev/databases/pg'
|
22
|
+
set :port, 22220
|
23
|
+
set :user, 'staging'
|
24
|
+
set :domain, 'miramo.infinum.co'
|
25
|
+
|
26
|
+
task :production do
|
27
|
+
set :deploy_to, '/home/staging/www/m/miramo.infinum.co'
|
28
|
+
set :rails_env, 'production'
|
29
|
+
set :branch, 'master'
|
30
|
+
set :bundle_withouts, 'development:test:staging'
|
31
|
+
end
|
32
|
+
|
33
|
+
# If you have
|
34
|
+
task :staging do
|
35
|
+
set :domain, 'miramo-club.infinum.co'
|
36
|
+
set :deploy_to, '/home/staging/www/m/miramo-staging.infinum.co'
|
37
|
+
set :rails_env, 'staging'
|
38
|
+
set :branch, 'develop'
|
39
|
+
set :bundle_withouts, 'development:test:production'
|
40
|
+
end
|
41
|
+
|
42
|
+
task :development do
|
43
|
+
set :rails_env, 'development'
|
44
|
+
end
|
45
|
+
##################################################################################
|
46
|
+
########################## DO NOT EDIT THE CODE BELOW ############################
|
47
|
+
##################################################################################
|
48
|
+
|
49
|
+
# While linking asssets it will only precompile that assets that was changed, not all of them
|
50
|
+
set :shared_paths, ['log']
|
51
|
+
|
52
|
+
task :deploy => :stages do
|
53
|
+
deploy do
|
54
|
+
invoke :'git:clone'
|
55
|
+
invoke :'deploy:link_shared_paths'
|
56
|
+
invoke :'bundle:install'
|
57
|
+
invoke :'rails:db_migrate'
|
58
|
+
invoke :'rails:assets_precompile'
|
59
|
+
invoke :'deploy:cleanup'
|
60
|
+
|
61
|
+
to :launch do
|
62
|
+
# Capistrano to Mina Fix, symlink system to shared
|
63
|
+
queue! %[echo "-----> Symlink system to shared"]
|
64
|
+
queue! %[ln -nFs #{deploy_to}/shared/system #{deploy_to}/#{current_path}/public/system]
|
65
|
+
|
66
|
+
#invoke :'whenever:update' # uncomment if using whenever (why here? read https://gist.github.com/gabskoro/abfc245a55a9d155f8de)
|
67
|
+
invoke :restart_application
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# First ensure that the stage is selected
|
73
|
+
task :stages do
|
74
|
+
unless domain
|
75
|
+
print_error "A server needs to be specified. e.g. production/staging"
|
76
|
+
exit
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Just overwrote to execute stages first
|
81
|
+
task :setup => :stages do
|
82
|
+
queue! %[mkdir -p "#{deploy_to}/shared/log"]
|
83
|
+
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/log"]
|
84
|
+
end
|
85
|
+
|
86
|
+
# Tail log from server
|
87
|
+
task :log => :stages do
|
88
|
+
queue "tail -f #{deploy_to}/#{current_path}/log/#{rails_env}.log"
|
89
|
+
end
|
90
|
+
|
91
|
+
# Restart application after deployment
|
92
|
+
task :restart_application do
|
93
|
+
queue %[echo "-----> Restarting application"]
|
94
|
+
queue "mkdir -p #{deploy_to}/#{current_path}/tmp"
|
95
|
+
queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
|
96
|
+
end
|
97
|
+
|
98
|
+
namespace :data do
|
99
|
+
set :pretty_print, true
|
100
|
+
set :db_path, '/Users/stef/dev/databases'
|
101
|
+
|
102
|
+
# # Sync database
|
103
|
+
# RYAML = <<-BASH
|
104
|
+
# function ryaml {
|
105
|
+
# ruby -ryaml -e 'puts ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[key] }' "$@"
|
106
|
+
# };
|
107
|
+
# BASH
|
108
|
+
|
109
|
+
task :pull => :stages do
|
110
|
+
queue RYAML
|
111
|
+
queue! "HOST=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} host)"
|
112
|
+
queue! "DATABASE=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} database)"
|
113
|
+
queue! "USERNAME=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} username)"
|
114
|
+
queue! "PASSWORD=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} password)"
|
115
|
+
queue! "mysqldump $DATABASE --host=$HOST --user=$USERNAME --password=$PASSWORD > #{deploy_to}/dump.sql"
|
116
|
+
queue! "gzip -f #{deploy_to}/dump.sql"
|
117
|
+
|
118
|
+
to :after_hook do
|
119
|
+
queue! "scp -P #{port} #{user}@#{domain}:#{deploy_to}/dump.sql.gz ."
|
120
|
+
queue! "gunzip -f dump.sql.gz"
|
121
|
+
queue! "#{RYAML} mysql --verbose --user=$(ryaml config/database.yml development username) --password=$(ryaml config/database.yml development password) $(ryaml config/database.yml development database) < dump.sql"
|
122
|
+
queue! "rm dump.sql"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -1,4 +1,3 @@
|
|
1
1
|
set_default :database_path, "config/database.yml"
|
2
|
-
set_default :
|
3
|
-
set_default :
|
4
|
-
set_default :pg_options, "-O -Ft -a"
|
2
|
+
set_default :remote_backup_path, 'tmp'
|
3
|
+
set_default :local_backup_path, 'tmp/backups'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
ARGUMENTS = <<-RUBY
|
2
2
|
dc = YAML.load(ERB.new(File.read(ARGV[0])).result)[ARGV[1]]
|
3
3
|
adapter = dc["adapter"]
|
4
4
|
database = dc["database"]
|
@@ -13,58 +13,47 @@ DC = <<-RUBY
|
|
13
13
|
arguments += " -h " + host if host
|
14
14
|
arguments += " -U " + username if username
|
15
15
|
arguments += " -p " + port.to_s if port
|
16
|
-
|
16
|
+
when "mysql2"
|
17
|
+
arguments += " " + database if database
|
18
|
+
arguments += " -h " + host if host
|
19
|
+
arguments += " -u " + username if username
|
20
|
+
arguments += " --password=" + password if password
|
21
|
+
arguments += " -P " + port.to_s if port
|
17
22
|
end
|
23
|
+
puts arguments
|
18
24
|
RUBY
|
19
25
|
|
20
|
-
|
21
|
-
function
|
22
|
-
ruby -ryaml -rerb -e '#{
|
26
|
+
CONF = <<-BASH
|
27
|
+
function conf {
|
28
|
+
ruby -ryaml -rerb -e '#{ARGUMENTS}' "$@"
|
23
29
|
};
|
24
30
|
BASH
|
25
31
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
# def initialize(database_path, rails_env, deploy_to, tar)
|
30
|
-
# @database_conf = YAML.load(ERB.new(File.read(database_path)).result)[rails_env]
|
31
|
-
# @tar = tar
|
32
|
-
# @deploy_to = deploy_to
|
33
|
-
# end
|
34
|
-
|
35
|
-
# def database
|
36
|
-
# @database_conf['database']
|
37
|
-
# end
|
38
|
-
|
39
|
-
# def host
|
40
|
-
# @database_conf['host']
|
41
|
-
# end
|
42
|
-
|
43
|
-
# def username
|
44
|
-
# @database_conf['username']
|
45
|
-
# end
|
32
|
+
def read_conf(path, rails_env)
|
33
|
+
@conf ||= YAML.load(ERB.new(File.read(path)).result)[rails_env]
|
34
|
+
end
|
46
35
|
|
47
|
-
|
48
|
-
#
|
49
|
-
|
36
|
+
def backup_file
|
37
|
+
"#{@conf['database']}-#{Date.today}.sql"
|
38
|
+
end
|
50
39
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
# end
|
40
|
+
def dump
|
41
|
+
case @conf['adapter']
|
42
|
+
when 'postgresql' then 'pg_dump'
|
43
|
+
when 'mysql2' then 'mysqldump'
|
44
|
+
end
|
45
|
+
end
|
58
46
|
|
59
|
-
|
60
|
-
|
61
|
-
|
47
|
+
def restore
|
48
|
+
case @conf['adapter']
|
49
|
+
when 'postgresql' then 'psql -q'
|
50
|
+
when 'mysql2' then 'mysql --verbose'
|
51
|
+
end
|
52
|
+
end
|
62
53
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
# end
|
70
|
-
# end
|
54
|
+
def options
|
55
|
+
case @conf['adapter']
|
56
|
+
when 'postgresql' then '-O -c'
|
57
|
+
when 'mysql2' then ''
|
58
|
+
end
|
59
|
+
end
|
data/lib/mina/data_sync/tasks.rb
CHANGED
@@ -1,39 +1,43 @@
|
|
1
1
|
namespace :data_sync do
|
2
2
|
set :term_mode, :pretty
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
task setup_sync: :environment do
|
5
|
+
read_conf(database_path, rails_env)
|
6
|
+
end
|
7
|
+
|
8
|
+
task pull: :setup_sync do
|
6
9
|
queue "echo '-----> Dumping database'"
|
7
|
-
queue "#{DATABASE_CONF}"
|
8
10
|
queue "cd #{deploy_to}/#{current_path}"
|
9
|
-
queue "
|
10
|
-
queue! "
|
11
|
+
queue! "#{CONF}"
|
12
|
+
queue! "ARGS=$(conf #{database_path} #{rails_env})"
|
13
|
+
queue "mkdir -p #{remote_backup_path}"
|
14
|
+
queue! "#{dump} $ARGS #{options} > #{remote_backup_path}/#{backup_file}"
|
11
15
|
|
12
16
|
to :after_hook do
|
13
17
|
queue "echo '-----> Copying backup'"
|
14
|
-
queue "#{
|
15
|
-
queue "ARGS=$(
|
16
|
-
queue
|
18
|
+
queue "#{CONF}"
|
19
|
+
queue "ARGS=$(conf #{database_path} development)"
|
20
|
+
queue "mkdir -p #{local_backup_path}"
|
21
|
+
queue! "scp -P #{port} #{user}@#{domain}:#{deploy_to}/#{current_path}/#{remote_backup_path}/#{backup_file} #{local_backup_path}/#{backup_file}"
|
17
22
|
queue "echo '-----> Restoring database'"
|
18
|
-
queue! "
|
23
|
+
queue! "#{restore} $ARGS < #{local_backup_path}/#{backup_file}"
|
19
24
|
end
|
20
25
|
end
|
21
26
|
|
22
|
-
|
23
|
-
task :pg_push => :environment do
|
27
|
+
task push: :setup_sync do
|
24
28
|
to :before_hook do
|
25
|
-
queue "#{
|
29
|
+
queue "#{CONF}"
|
26
30
|
queue "echo '-----> Dumping database'"
|
27
|
-
queue "ARGS=$(
|
28
|
-
queue! "
|
31
|
+
queue "ARGS=$(conf #{database_path} development)"
|
32
|
+
queue! "#{dump} $ARGS #{options} > #{local_backup_path}/#{backup_file}"
|
29
33
|
queue "echo '-----> Copying backup'"
|
30
|
-
queue! "scp -P #{port} #{backup_file} #{user}@#{domain}:#{deploy_to}/#{current_path}/#{backup_file}"
|
34
|
+
queue! "scp -P #{port} #{local_backup_path}#{backup_file} #{user}@#{domain}:#{deploy_to}/#{current_path}/#{remote_backup_path}/#{backup_file}"
|
31
35
|
end
|
32
36
|
|
33
37
|
queue "echo '-----> Restoring database'"
|
34
|
-
queue "#{DATABASE_CONF}"
|
35
38
|
queue "cd #{deploy_to}/#{current_path}"
|
36
|
-
queue "
|
37
|
-
queue
|
39
|
+
queue "#{CONF}"
|
40
|
+
queue "ARGS=$(conf #{database_path} #{rails_env})"
|
41
|
+
queue! "#{restore} $ARGS < #{remote_backup_file}/#{backup_file}"
|
38
42
|
end
|
39
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mina-data_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stjepan Hadjic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -78,11 +78,10 @@ files:
|
|
78
78
|
- LICENSE.txt
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
81
|
-
- backup-2015-03-30.sql
|
82
|
-
- backup-2015-03-30.tar
|
83
|
-
- backup.tar
|
84
81
|
- config/database.yml
|
85
82
|
- config/deploy.rb
|
83
|
+
- config_pg/database.yml
|
84
|
+
- config_pg/deploy.rb
|
86
85
|
- lib/mina/data_sync.rb
|
87
86
|
- lib/mina/data_sync/defaults.rb
|
88
87
|
- lib/mina/data_sync/helpers.rb
|