engineyard-eycap 0.4.5 → 0.4.6
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/History.txt +3 -0
- data/Manifest.txt +1 -0
- data/lib/capistrano/recipes/deploy/strategy/remote_cache.rb +56 -0
- data/lib/eycap/recipes/database.rb +3 -3
- data/lib/eycap.rb +1 -1
- metadata +2 -1
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'capistrano/recipes/deploy/strategy/remote'
|
2
|
+
|
3
|
+
module Capistrano
|
4
|
+
module Deploy
|
5
|
+
module Strategy
|
6
|
+
|
7
|
+
# Implements the deployment strategy that keeps a cached checkout of
|
8
|
+
# the source code on each remote server. Each deploy simply updates the
|
9
|
+
# cached checkout, and then does a copy from the cached copy to the
|
10
|
+
# final deployment location.
|
11
|
+
class RemoteCache < Remote
|
12
|
+
# Executes the SCM command for this strategy and writes the REVISION
|
13
|
+
# mark file to each host.
|
14
|
+
def deploy!
|
15
|
+
update_repository_cache
|
16
|
+
copy_repository_cache
|
17
|
+
end
|
18
|
+
|
19
|
+
def check!
|
20
|
+
super.check do |d|
|
21
|
+
d.remote.writable(shared_path)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def repository_cache
|
28
|
+
File.join(configuration[:repository_cache] || "cached-copy")
|
29
|
+
end
|
30
|
+
|
31
|
+
def update_repository_cache
|
32
|
+
logger.trace "updating the cached checkout on all servers"
|
33
|
+
command = "if [ -d #{repository_cache} ]; then " +
|
34
|
+
"#{source.sync(revision, repository_cache)}; " +
|
35
|
+
"else #{source.checkout(revision, repository_cache)}; fi"
|
36
|
+
scm_run(command)
|
37
|
+
end
|
38
|
+
|
39
|
+
def copy_repository_cache
|
40
|
+
logger.trace "copying the cached version to #{configuration[:release_path]}"
|
41
|
+
if copy_exclude.empty?
|
42
|
+
run "cp -RPp #{repository_cache} #{configuration[:release_path]} && #{mark}"
|
43
|
+
else
|
44
|
+
exclusions = copy_exclude.map { |e| "--exclude=\"#{e}\"" }.join(' ')
|
45
|
+
run "rsync -lrp #{exclusions} #{repository_cache}/* #{configuration[:release_path]} && #{mark}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def copy_exclude
|
50
|
+
@copy_exclude ||= Array(configuration.fetch(:copy_exclude, []))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -25,14 +25,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
25
25
|
run "mysqldump --add-drop-table -u #{dbuser} -h #{dbhost} -p #{environment_database} | bzip2 -c > #{backup_file}.bz2" do |ch, stream, out |
|
26
26
|
ch.send_data "#{dbpass}\n" if out=~ /^Enter password:/
|
27
27
|
end
|
28
|
-
run "mysql -u #{dbuser} -p -h #{staging_dbhost} #{staging_database}
|
28
|
+
run "bzcat #{backup_file}.bz2 | mysql -u #{dbuser} -p -h #{staging_dbhost} #{staging_database}" do |ch, stream, out|
|
29
29
|
ch.send_data "#{dbpass}\n" if out=~ /^Enter password:/
|
30
30
|
end
|
31
31
|
else
|
32
|
-
run "pg_dump -W -c -U #{dbuser} -h #{production_dbhost}
|
32
|
+
run "pg_dump -W -c -U #{dbuser} -h #{production_dbhost} #{production_database} | bzip2 -c > #{backup_file}.bz2" do |ch, stream, out|
|
33
33
|
ch.send_data "#{dbpass}\n" if out=~ /^Password:/
|
34
34
|
end
|
35
|
-
run "psql -W -U #{dbuser} -h #{staging_dbhost}
|
35
|
+
run "bzcat #{backup_file}.bz2 | psql -W -U #{dbuser} -h #{staging_dbhost} #{staging_database}" do |ch, stream, out|
|
36
36
|
ch.send_data "#{dbpass}\n" if out=~ /^Password:/
|
37
37
|
end
|
38
38
|
end
|
data/lib/eycap.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-eycap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Engine Yard
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- README.txt
|
49
49
|
- Rakefile
|
50
50
|
- lib/capistrano/recipes/deploy/strategy/filtered_remote_cache.rb
|
51
|
+
- lib/capistrano/recipes/deploy/strategy/remote_cache.rb
|
51
52
|
- lib/eycap.rb
|
52
53
|
- lib/eycap/lib/ey_logger.rb
|
53
54
|
- lib/eycap/lib/ey_logger_hooks.rb
|