capones_recipes 1.10.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -15,29 +15,8 @@ Capistrano::Configuration.instance.load do
15
15
  # Kindly sponsored by Screen Concept, www.screenconcept.ch
16
16
  #
17
17
  namespace :sync do
18
-
19
- after "deploy:setup", "sync:setup"
20
-
21
- desc <<-DESC
22
- Creates the sync dir in shared path. The sync directory is used to keep
23
- backups of database dumps and archives from synced directories. This task will
24
- be called on 'deploy:setup'
25
- DESC
26
- task :setup do
27
- run "mkdir -p #{shared_path}/sync"
28
- end
29
-
30
18
  namespace :down do
31
19
 
32
- desc <<-DESC
33
- Syncs the database and declared directories from the selected multi_stage environment
34
- to the local development environment. This task simply calls both the 'sync:down:db' and
35
- 'sync:down:fs' tasks.
36
- DESC
37
- task :default do
38
- db and fs
39
- end
40
-
41
20
  desc <<-DESC
42
21
  Syncs database from the selected mutli_stage environement to the local develoment environment.
43
22
  The database credentials will be read from your local config/database.yml file and a copy of the
@@ -74,87 +53,10 @@ Capistrano::Configuration.instance.load do
74
53
  run_locally "rake db:migrate"
75
54
  end
76
55
 
77
- desc <<-DESC
78
- Sync declared directories from the selected multi_stage environment to the local development
79
- environment. The synced directories must be declared as an array of Strings with the sync_directories
80
- variable. The path is relative to the rails root.
81
- DESC
82
- task :fs, :roles => :web, :once => true do
83
- # Use production on non-multistage
84
- set :stage, 'production' unless exists?(:stage)
85
-
86
- server, port = host_and_port
87
-
88
- Array(fetch(:sync_directories, [])).each do |syncdir|
89
- unless File.directory? "#{syncdir}"
90
- logger.info "create local '#{syncdir}' folder"
91
- Dir.mkdir "#{syncdir}"
92
- end
93
- logger.info "sync #{syncdir} from #{server}:#{port} to local"
94
- destination, base = Pathname.new(syncdir).split
95
- run_locally "rsync --verbose --archive --compress --copy-links --delete --stats --rsh='ssh -p #{port}' #{user}@#{server}:#{current_path}/#{syncdir} #{destination.to_s}"
96
- end
97
-
98
- logger.important "sync filesystem from the stage '#{stage}' to local finished"
99
- end
100
-
101
- namespace :kuhsaft do
102
-
103
- desc <<-DESC
104
- Syncs the database and declared directories from the selected multi_stage environment
105
- to the local development environment. This task simply calls both the 'sync:down:kuhsaft:db' and
106
- 'sync:down:kuhsaft:fs' tasks.
107
- DESC
108
- task :default do
109
- db
110
- end
111
-
112
- desc <<-DESC
113
- Syncs database from the selected mutli_stage environement to the local develoment environment.
114
- The database credentials will be read from your local config/database.yml file and a copy of the
115
- dump will be kept within the shared sync directory. The amount of backups that will be kept is
116
- declared in the sync_backups variable and defaults to 5.
117
- DESC
118
- task :db, :roles => :db, :only => { :primary => true } do
119
- # Use production on non-multistage
120
- set :stage, 'production' unless exists?(:stage)
121
-
122
- filename = "database.kuhsaft.#{stage}.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql.bz2"
123
- on_rollback { delete "#{shared_path}/sync/#{filename}" }
124
-
125
- # Remote DB dump
126
- username, password, database, host = remote_database_config(stage)
127
- host_option = host ? "--host='#{host}'" : ""
128
- run "mysqldump -u #{username} --password='#{password}' #{host_option} #{database} pages localized_pages contents assets tags taggings | bzip2 -9 > #{shared_path}/sync/#{filename}" do |channel, stream, data|
129
- puts data
130
- end
131
- purge_old_backups "database"
132
-
133
- # Download dump
134
- download "#{shared_path}/sync/#{filename}", filename
135
-
136
- # Local DB import
137
- username, password, database, host = database_config('development')
138
- run_locally "rake db:drop && rake db:create"
139
- run_locally "bzip2 -d -c #{filename} | mysql -u #{username} --password='#{password}' #{database}"
140
- run_locally "rm -f #{filename}"
141
-
142
- logger.important "sync database from the stage '#{stage}' to local finished"
143
- end
144
- end
145
56
  end
146
57
 
147
58
  namespace :up do
148
59
 
149
- desc <<-DESC
150
- Syncs the database and declared directories from the local development environment
151
- to the selected multi_stage environment. This task simply calls both the 'sync:up:db' and
152
- 'sync:up:fs' tasks.
153
- DESC
154
- task :default do
155
- db and fs
156
- end
157
-
158
60
  desc <<-DESC
159
61
  Syncs database from the local develoment environment to the selected mutli_stage environement.
160
62
  The database credentials will be read from your local config/database.yml file and a copy of the
@@ -197,88 +99,6 @@ Capistrano::Configuration.instance.load do
197
99
  logger.important "sync database from local to the stage '#{stage}' finished"
198
100
  end
199
101
 
200
- desc <<-DESC
201
- Sync declared directories from the local development environement to the selected multi_stage
202
- environment. The synced directories must be declared as an array of Strings with the sync_directories
203
- variable. The path is relative to the rails root.
204
- DESC
205
- task :fs, :roles => :web, :once => true do
206
- # Use production on non-multistage
207
- set :stage, 'production' unless exists?(:stage)
208
-
209
- server, port = host_and_port
210
- Array(fetch(:sync_directories, [])).each do |syncdir|
211
- destination, base = Pathname.new(syncdir).split
212
- if File.directory? "#{syncdir}"
213
- # Make a backup
214
- logger.info "backup #{syncdir}"
215
- run "tar cjf #{shared_path}/sync/#{base}.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.tar.bz2 #{current_path}/#{syncdir}"
216
- purge_old_backups "#{base}"
217
- else
218
- logger.info "Create '#{syncdir}' directory"
219
- run "mkdir #{current_path}/#{syncdir}"
220
- end
221
-
222
- # Sync directory up
223
- logger.info "sync #{syncdir} to #{server}:#{port} from local"
224
- run_locally "rsync --verbose --archive --compress --keep-dirlinks --delete --stats --rsh='ssh -p #{port}' #{syncdir} #{user}@#{server}:#{current_path}/#{destination.to_s}"
225
- end
226
- logger.important "sync filesystem from local to the stage '#{stage}' finished"
227
- end
228
-
229
- namespace :kuhsaft do
230
-
231
- desc <<-DESC
232
- Syncs the database and declared directories from the local development environment
233
- to the selected multi_stage environment. This task simply calls both the 'sync:up:kuhsaft:db' task.
234
- DESC
235
- task :default do
236
- db
237
- end
238
-
239
- desc <<-DESC
240
- Syncs database from the local develoment environment to the selected mutli_stage environement.
241
- The database credentials will be read from your local config/database.yml file and a copy of the
242
- dump will be kept within the shared sync directory. The amount of backups that will be kept is
243
- declared in the sync_backups variable and defaults to 5.
244
- DESC
245
- task :db, :roles => :db, :only => { :primary => true } do
246
- # Use production on non-multistage
247
- set :stage, 'production' unless exists?(:stage)
248
-
249
- filename = "database.kuhsaft.#{stage}.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql.bz2"
250
-
251
- on_rollback do
252
- delete "#{shared_path}/sync/#{filename}"
253
- run_locally "rm -f #{filename}"
254
- end
255
-
256
- # Make a backup before importing
257
- username, password, database, host = remote_database_config(stage)
258
- host_option = host ? "--host='#{host}'" : ""
259
- run "mysqldump -u #{username} --password='#{password}' #{host_option} #{database} pages localized_pages contents assets tags taggings | bzip2 -9 > #{shared_path}/sync/#{filename}" do |channel, stream, data|
260
- puts data
261
- end
262
-
263
- # Local DB export
264
- filename = "dump.local.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql.bz2"
265
- username, password, database, host = database_config('development')
266
- host_option = host ? "--host='#{host}'" : ""
267
- run_locally "mysqldump -u #{username} --password='#{password}' #{host_option} #{database} | bzip2 -9 > #{filename}"
268
- upload filename, "#{shared_path}/sync/#{filename}"
269
- run_locally "rm -f #{filename}"
270
-
271
- # Remote DB import
272
- username, password, database, host = remote_database_config(stage)
273
- host_option = host ? "--host='#{host}'" : ""
274
- run "bzip2 -d -c #{shared_path}/sync/#{filename} | mysql -u #{username} --password='#{password}' #{host_option} #{database}"
275
- run "rm -f #{shared_path}/sync/#{filename}"
276
- purge_old_backups "database.kuhsaft"
277
-
278
- logger.important "sync database from local to the stage '#{stage}' finished"
279
- end
280
- end
281
-
282
102
  end
283
103
 
284
104
  #
@@ -310,20 +130,5 @@ Capistrano::Configuration.instance.load do
310
130
  return roles[:web].servers.first.host, ssh_options[:port] || roles[:web].servers.first.port || 22
311
131
  end
312
132
 
313
- #
314
- # Purge old backups within the shared sync directory
315
- #
316
- def purge_old_backups(base)
317
- count = fetch(:sync_backups, 5).to_i
318
- backup_files = capture("ls -xt #{shared_path}/sync/#{base}*").split.reverse
319
- if count >= backup_files.length
320
- logger.important "no old backups to clean up"
321
- else
322
- logger.info "keeping #{count} of #{backup_files.length} sync backups"
323
- delete_backups = (backup_files - backup_files.last(count)).join(" ")
324
- try_sudo "rm -rf #{delete_backups}"
325
- end
326
- end
327
-
328
133
  end
329
134
  end
@@ -1,16 +1 @@
1
- Capistrano::Configuration.instance.load do
2
- before "deploy:setup", "kuhsaft:setup"
3
- after "deploy:update_code", "kuhsaft:symlink"
4
-
5
- namespace :kuhsaft do
6
- desc "Create uploads directory in capistrano shared path"
7
- task :setup do
8
- run "mkdir -p #{shared_path}/uploads"
9
- end
10
-
11
- desc "Make symlink for shared uploads"
12
- task :symlink do
13
- run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
14
- end
15
- end
16
- end
1
+ Dir.glob(File.join(File.dirname(__FILE__), '/kuhsaft/*.rb')).sort.each { |f| require f }
@@ -0,0 +1,16 @@
1
+ Capistrano::Configuration.instance.load do
2
+ before "deploy:setup", "kuhsaft:setup"
3
+ after "deploy:update_code", "kuhsaft:symlink"
4
+
5
+ namespace :kuhsaft do
6
+ desc "Create uploads directory in capistrano shared path"
7
+ task :setup do
8
+ run "mkdir -p #{shared_path}/uploads"
9
+ end
10
+
11
+ desc "Make symlink for shared uploads"
12
+ task :symlink do
13
+ run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,92 @@
1
+ require 'yaml'
2
+ require 'pathname'
3
+
4
+ Capistrano::Configuration.instance.load do
5
+ #
6
+ # Capistrano sync.rb task to sync kuhsaft databas.
7
+ #
8
+ namespace :sync do
9
+ namespace :down do
10
+ namespace :kuhsaft do
11
+ desc <<-DESC
12
+ Syncs database from the selected mutli_stage environment to the local develoment environment.
13
+ The database credentials will be read from your local config/database.yml file and a copy of the
14
+ dump will be kept within the shared sync directory. The amount of backups that will be kept is
15
+ declared in the sync_backups variable and defaults to 5.
16
+ DESC
17
+ task :db, :roles => :db, :only => { :primary => true } do
18
+ # Use production on non-multistage
19
+ set :stage, 'production' unless exists?(:stage)
20
+
21
+ filename = "database.kuhsaft.#{stage}.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql.bz2"
22
+ on_rollback { delete "#{shared_path}/sync/#{filename}" }
23
+
24
+ # Remote DB dump
25
+ username, password, database, host = remote_database_config(stage)
26
+ host_option = host ? "--host='#{host}'" : ""
27
+ run "mysqldump -u #{username} --password='#{password}' #{host_option} #{database} pages localized_pages contents assets tags taggings | bzip2 -9 > #{shared_path}/sync/#{filename}" do |channel, stream, data|
28
+ puts data
29
+ end
30
+ purge_old_backups "database"
31
+
32
+ # Download dump
33
+ download "#{shared_path}/sync/#{filename}", filename
34
+
35
+ # Local DB import
36
+ username, password, database, host = database_config('development')
37
+ run_locally "rake db:drop && rake db:create"
38
+ run_locally "bzip2 -d -c #{filename} | mysql -u #{username} --password='#{password}' #{database}"
39
+ run_locally "rm -f #{filename}"
40
+
41
+ logger.important "sync database from the stage '#{stage}' to local finished"
42
+ end
43
+ end
44
+ end
45
+
46
+ namespace :up do
47
+ namespace :kuhsaft do
48
+ desc <<-DESC
49
+ Syncs database from the local develoment environment to the selected mutli_stage environement.
50
+ The database credentials will be read from your local config/database.yml file and a copy of the
51
+ dump will be kept within the shared sync directory. The amount of backups that will be kept is
52
+ declared in the sync_backups variable and defaults to 5.
53
+ DESC
54
+ task :db, :roles => :db, :only => { :primary => true } do
55
+ # Use production on non-multistage
56
+ set :stage, 'production' unless exists?(:stage)
57
+
58
+ filename = "database.kuhsaft.#{stage}.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql.bz2"
59
+
60
+ on_rollback do
61
+ delete "#{shared_path}/sync/#{filename}"
62
+ run_locally "rm -f #{filename}"
63
+ end
64
+
65
+ # Make a backup before importing
66
+ username, password, database, host = remote_database_config(stage)
67
+ host_option = host ? "--host='#{host}'" : ""
68
+ run "mysqldump -u #{username} --password='#{password}' #{host_option} #{database} pages localized_pages contents assets tags taggings | bzip2 -9 > #{shared_path}/sync/#{filename}" do |channel, stream, data|
69
+ puts data
70
+ end
71
+
72
+ # Local DB export
73
+ filename = "dump.local.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql.bz2"
74
+ username, password, database, host = database_config('development')
75
+ host_option = host ? "--host='#{host}'" : ""
76
+ run_locally "mysqldump -u #{username} --password='#{password}' #{host_option} #{database} | bzip2 -9 > #{filename}"
77
+ upload filename, "#{shared_path}/sync/#{filename}"
78
+ run_locally "rm -f #{filename}"
79
+
80
+ # Remote DB import
81
+ username, password, database, host = remote_database_config(stage)
82
+ host_option = host ? "--host='#{host}'" : ""
83
+ run "bzip2 -d -c #{shared_path}/sync/#{filename} | mysql -u #{username} --password='#{password}' #{host_option} #{database}"
84
+ run "rm -f #{shared_path}/sync/#{filename}"
85
+ purge_old_backups "database.kuhsaft"
86
+
87
+ logger.important "sync database from local to the stage '#{stage}' finished"
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1 @@
1
+ Dir.glob(File.join(File.dirname(__FILE__), '/sync/*.rb')).sort.each { |f| require f }
@@ -0,0 +1,63 @@
1
+ Capistrano::Configuration.instance.load do
2
+ #
3
+ # Capistrano task for syncing directories.
4
+ #
5
+ namespace :sync do
6
+ namespace :down do
7
+ desc <<-DESC
8
+ Sync declared directories from the selected multi_stage environment to the local development
9
+ environment. The synced directories must be declared as an array of Strings with the sync_directories
10
+ variable. The path is relative to the shared path.
11
+ DESC
12
+ task :fs, :roles => :web, :once => true do
13
+ # Use production on non-multistage
14
+ set :stage, 'production' unless exists?(:stage)
15
+
16
+ server, port = host_and_port
17
+
18
+ Array(fetch(:sync_directories, [])).each do |syncdir|
19
+ unless File.directory? "#{syncdir}"
20
+ logger.info "create local '#{syncdir}' folder"
21
+ Dir.mkdir "#{syncdir}"
22
+ end
23
+ logger.info "sync #{syncdir} from #{server}:#{port} to local"
24
+ destination, base = Pathname.new(syncdir).split
25
+ run_locally "rsync --verbose --archive --compress --copy-links --delete --stats --rsh='ssh -p #{port}' #{user}@#{server}:#{shared_path}/#{syncdir} #{destination.to_s}"
26
+ end
27
+
28
+ logger.important "sync filesystem from the stage '#{stage}' to local finished"
29
+ end
30
+ end
31
+
32
+ namespace :up do
33
+ desc <<-DESC
34
+ Sync declared directories from the local development environement to the selected multi_stage
35
+ environment. The synced directories must be declared as an array of Strings with the sync_directories
36
+ variable. The path is relative to the shared path.
37
+ DESC
38
+ task :fs, :roles => :web, :once => true do
39
+ # Use production on non-multistage
40
+ set :stage, 'production' unless exists?(:stage)
41
+
42
+ server, port = host_and_port
43
+ Array(fetch(:sync_directories, [])).each do |syncdir|
44
+ destination, base = Pathname.new(syncdir).split
45
+ if File.directory? "#{syncdir}"
46
+ # Make a backup
47
+ logger.info "backup #{syncdir}"
48
+ run "tar cjf #{shared_path}/sync/#{base}.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.tar.bz2 #{shared_path}/#{syncdir}"
49
+ purge_old_backups "#{base}"
50
+ else
51
+ logger.info "Create '#{syncdir}' directory"
52
+ run "mkdir #{current_path}/#{syncdir}"
53
+ end
54
+
55
+ # Sync directory up
56
+ logger.info "sync #{syncdir} to #{server}:#{port} from local"
57
+ run_locally "rsync --verbose --archive --compress --keep-dirlinks --delete --stats --rsh='ssh -p #{port}' #{syncdir} #{user}@#{server}:#{shared_path}/#{destination.to_s}"
58
+ end
59
+ logger.important "sync filesystem from local to the stage '#{stage}' finished"
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,61 @@
1
+ Capistrano::Configuration.instance.load do
2
+ #
3
+ # Capistrano task for syncing data between the
4
+ # local development environment and different multi_stage environments. You
5
+ # cannot sync directly between two multi_stage environments, always use your
6
+ # local machine as loop way.
7
+ #
8
+ # Based on code by Michael Kessler aka netzpirat, sponsored by Screen Concept, www.screenconcept.ch
9
+ #
10
+ # Released under the MIT license.
11
+ #
12
+ namespace :sync do
13
+ after "deploy:setup", "sync:setup"
14
+
15
+ desc <<-DESC
16
+ Creates the sync dir in shared path. The sync directory is used to keep
17
+ backups of database dumps and archives from synced directories. This task will
18
+ be called on 'deploy:setup'
19
+ DESC
20
+ task :setup do
21
+ run "mkdir -p #{shared_path}/sync"
22
+ end
23
+
24
+ namespace :down do
25
+ desc <<-DESC
26
+ Syncs data from the selected multi_stage environment to the local development environment.
27
+ This task calls all tasks in the 'sync:down' namespace.
28
+ DESC
29
+ task :default do
30
+ subtasks = task_list(true) - [current_task]
31
+ subtasks.map{|task| execute_task(task)}
32
+ end
33
+ end
34
+
35
+ namespace :up do
36
+ desc <<-DESC
37
+ Syncs data from the local development environment to the selected multi_stage environment.
38
+ This task calls all tasks in the 'sync:up' namespace.
39
+ DESC
40
+ task :default do
41
+ subtasks = task_list(true) - [current_task]
42
+ subtasks.map{|task| execute_task(task)}
43
+ end
44
+ end
45
+
46
+ #
47
+ # Purge old backups within the shared sync directory
48
+ #
49
+ def purge_old_backups(base)
50
+ count = fetch(:sync_backups, 5).to_i
51
+ backup_files = capture("ls -xt #{shared_path}/sync/#{base}*").split.reverse
52
+ if count >= backup_files.length
53
+ logger.important "no old backups to clean up"
54
+ else
55
+ logger.info "keeping #{count} of #{backup_files.length} sync backups"
56
+ delete_backups = (backup_files - backup_files.last(count)).join(" ")
57
+ try_sudo "rm -rf #{delete_backups}"
58
+ end
59
+ end
60
+ end
61
+ end
@@ -1,3 +1,3 @@
1
1
  module CaponesRecipes
2
- VERSION = "1.10.0"
2
+ VERSION = "1.11.0"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capones_recipes
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 59
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 10
8
+ - 11
9
9
  - 0
10
- version: 1.10.0
10
+ version: 1.11.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Roman Simecek (CyT)
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-12-01 00:00:00 +01:00
19
+ date: 2011-12-06 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -143,12 +143,17 @@ files:
143
143
  - lib/capones_recipes/tasks/deploy_targets.rb
144
144
  - lib/capones_recipes/tasks/email.rb
145
145
  - lib/capones_recipes/tasks/kuhsaft.rb
146
+ - lib/capones_recipes/tasks/kuhsaft/kuhsaft.rb
147
+ - lib/capones_recipes/tasks/kuhsaft/sync.rb
146
148
  - lib/capones_recipes/tasks/new_relic.rb
147
149
  - lib/capones_recipes/tasks/rails.rb
148
150
  - lib/capones_recipes/tasks/rails/database_yml.rb
149
151
  - lib/capones_recipes/tasks/rails/logs.rb
150
152
  - lib/capones_recipes/tasks/restful_authentication.rb
151
153
  - lib/capones_recipes/tasks/settings_logic.rb
154
+ - lib/capones_recipes/tasks/sync.rb
155
+ - lib/capones_recipes/tasks/sync/fs.rb
156
+ - lib/capones_recipes/tasks/sync/sync.rb
152
157
  - lib/capones_recipes/tasks/thinking_sphinx.rb
153
158
  - lib/capones_recipes/tasks/utilities.rb
154
159
  - lib/capones_recipes/version.rb