capistrano-fanfare 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.
- data/lib/capistrano/fanfare/database_yaml.rb +26 -0
- data/lib/capistrano/fanfare/foreman.rb +7 -4
- data/lib/capistrano/fanfare/foreman/strategy/runit.rb +89 -22
- data/lib/capistrano/fanfare/version.rb +1 -1
- data/spec/bundler_spec.rb +1 -1
- data/spec/database_yaml_spec.rb +32 -0
- data/spec/foreman/strategy/runit_spec.rb +97 -16
- data/spec/foreman_spec.rb +14 -2
- metadata +17 -14
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'capistrano'
|
2
|
+
|
3
|
+
module Capistrano::Fanfare::DatabaseYaml
|
4
|
+
def self.load_into(configuration)
|
5
|
+
configuration.load do
|
6
|
+
# =========================================================================
|
7
|
+
# These are the tasks that are available to help with deploying web apps.
|
8
|
+
# You can have cap give you a summary of them with `cap -T'.
|
9
|
+
# =========================================================================
|
10
|
+
|
11
|
+
namespace :db do
|
12
|
+
desc <<-DESC
|
13
|
+
[internal] Copies database.yml from shared_path into release_path.
|
14
|
+
DESC
|
15
|
+
task :cp_database_yml, :roles => :app, :except => { :no_release => true } do
|
16
|
+
run [
|
17
|
+
"mkdir -p #{release_path}/config &&",
|
18
|
+
"cp #{shared_path}/config/database.yml #{release_path}/config/database.yml"
|
19
|
+
].join(' ')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
after "deploy:update_code", "db:cp_database_yml"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -145,10 +145,13 @@ module Capistrano::Fanfare::Foreman
|
|
145
145
|
foreman.run_cmd
|
146
146
|
end
|
147
147
|
|
148
|
-
after
|
149
|
-
after
|
150
|
-
|
151
|
-
after
|
148
|
+
after "deploy:finalize_update", "foreman:cp_env"
|
149
|
+
after "deploy:update_code", "foreman:export"
|
150
|
+
before "deploy:start", "foreman:register"
|
151
|
+
after "deploy:start", "foreman:start"
|
152
|
+
before "deploy:restart", "foreman:register"
|
153
|
+
after "deploy:restart", "foreman:restart"
|
154
|
+
after "deploy:stop", "foreman:stop"
|
152
155
|
end
|
153
156
|
end
|
154
157
|
end
|
@@ -10,55 +10,122 @@ module Capistrano
|
|
10
10
|
|
11
11
|
class Runit < Base
|
12
12
|
def export
|
13
|
+
svp = configuration[:runit_sv_path]
|
14
|
+
|
13
15
|
run [
|
16
|
+
"set -x &&",
|
17
|
+
"svp=#{svp} &&",
|
14
18
|
"cd #{configuration[:current_release]} &&",
|
15
19
|
"if [ -f Procfile ] ; then",
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
# create an empty staging directory for services
|
21
|
+
"rm -rf ${svp}-pre &&",
|
22
|
+
"mkdir -p ${svp}-pre &&",
|
23
|
+
|
24
|
+
# export services into a *-pre directory
|
25
|
+
"#{configuration[:foreman_cmd]} export runit",
|
26
|
+
"${svp}-pre",
|
27
|
+
"--app=#{configuration[:runit_app_name]}",
|
28
|
+
"--log=#{configuration[:shared_path]}/log",
|
29
|
+
"--user=#{configuration[:user]} &&",
|
30
|
+
|
31
|
+
# fix any path references in files back to :runit_sv_path
|
32
|
+
# and ensure that a non-zero sed exit doesn't propagate
|
33
|
+
"set +x &&",
|
34
|
+
"egrep -lr ${svp}-pre ${svp}-pre | (xargs",
|
35
|
+
"sed -i \"s|${svp}-pre|${svp}|g\" || true) &&",
|
36
|
+
|
37
|
+
# calculate checksums of all service files in both
|
38
|
+
# service directories
|
39
|
+
"(cd ${svp} ; find . -path '*/supervise' -type d",
|
40
|
+
"-prune -o -type f | grep -v 'supervise$' | sort |",
|
41
|
+
"xargs openssl sha) > /tmp/sv-dir-$$ &&",
|
42
|
+
"(cd ${svp}-pre ; find . -path '*/supervise' -type d",
|
43
|
+
"-prune -o -type f | grep -v 'supervise$' | sort |",
|
44
|
+
"xargs openssl sha) > /tmp/sv-pre-dir-$$ &&",
|
45
|
+
"set -x &&",
|
46
|
+
|
47
|
+
"if diff -q /tmp/sv-dir-$$ /tmp/sv-pre-dir-$$ >/dev/null ; then",
|
48
|
+
"echo '\\n===> Foreman export atrifacts are identical\\n' &&",
|
49
|
+
"rm -rf ${svp}-pre",
|
50
|
+
|
51
|
+
"; else", # diff -q
|
52
|
+
"echo '\\n===> Updated Foreman export artifacts detected\\n' &&",
|
53
|
+
"echo '---> Stoping processes' &&",
|
54
|
+
"rm -f #{all_services} &&",
|
55
|
+
"echo '---> Installing updated Foreman export artifacts' &&",
|
56
|
+
"rm -rf ${svp} && mv ${svp}-pre ${svp} &&",
|
57
|
+
"touch ${svp}/.symlink_boot",
|
58
|
+
"; fi &&", # diff -q
|
59
|
+
|
60
|
+
# clean checksum calculations
|
61
|
+
"echo '---> Cleaning up' &&",
|
62
|
+
"rm -f /tmp/sv-{dir,pre-dir}-$$",
|
63
|
+
|
64
|
+
"; else", # -f Procfile
|
65
|
+
# die with a warning about including a Procfile
|
66
|
+
"echo '>>>> A Procfile must exist in this project.' && exit 10",
|
67
|
+
"; fi" # -f Procfile
|
26
68
|
].join(' ')
|
27
69
|
end
|
28
70
|
|
29
71
|
def register
|
72
|
+
symlink_boot = capture([
|
73
|
+
"if [ -f #{configuration[:runit_sv_path]}/.symlink_boot ] ; then",
|
74
|
+
"echo true",
|
75
|
+
"; else",
|
76
|
+
"echo false",
|
77
|
+
"; fi"
|
78
|
+
].join(' ')).chomp
|
79
|
+
|
80
|
+
# if the service symlinks are fresh, this will start the
|
81
|
+
# service automatically so we won't try to pile on and
|
82
|
+
# call foreman:start or foreman:restart
|
83
|
+
if symlink_boot == "true" && callbacks[:after]
|
84
|
+
callbacks[:after].reject! { |c| c.source == "foreman:start" }
|
85
|
+
callbacks[:after].reject! { |c| c.source == "foreman:restart" }
|
86
|
+
end
|
87
|
+
|
30
88
|
run [
|
31
89
|
"ln -snf #{configuration[:runit_sv_path]}/*",
|
32
|
-
"#{configuration[:runit_service_path]}/"
|
90
|
+
"#{configuration[:runit_service_path]}/ &&",
|
91
|
+
"rm -f #{configuration[:runit_sv_path]}/.symlink_boot"
|
33
92
|
].join(' ')
|
34
93
|
end
|
35
94
|
|
36
95
|
def start(proc_group = nil)
|
37
96
|
run [
|
38
|
-
"sv start #{
|
39
|
-
"
|
40
|
-
].join
|
97
|
+
"sv start #{all_services}",
|
98
|
+
"(s=$? && echo \"Start exited with $s\" && exit $s)"
|
99
|
+
].join(' || ')
|
41
100
|
end
|
42
101
|
|
43
102
|
def stop(proc_group = nil)
|
44
103
|
run [
|
45
|
-
"sv stop #{
|
46
|
-
"
|
47
|
-
].join
|
104
|
+
"sv stop #{all_services}",
|
105
|
+
"(s=$? && echo \"Stop exited with $s\" && exit $s)"
|
106
|
+
].join(' || ')
|
48
107
|
end
|
49
108
|
|
50
109
|
def restart(proc_group = nil)
|
51
110
|
run [
|
52
|
-
"sv restart #{
|
53
|
-
"
|
54
|
-
].join
|
111
|
+
"sv restart #{all_services}",
|
112
|
+
"(s=$? && echo \"Restart exited with $s\" && exit $s)"
|
113
|
+
].join(' || ')
|
55
114
|
end
|
56
115
|
|
57
116
|
def ps
|
58
117
|
run [
|
59
|
-
"sv status #{
|
118
|
+
"sv status #{all_services}",
|
119
|
+
"(s=$? && echo \"Status exited with $s\" && exit $s)"
|
120
|
+
].join(' || ')
|
121
|
+
end
|
122
|
+
|
123
|
+
private
|
124
|
+
|
125
|
+
def all_services
|
126
|
+
[ configuration[:runit_service_path],
|
60
127
|
"#{configuration[:runit_app_name]}-*"
|
61
|
-
].join
|
128
|
+
].join('/')
|
62
129
|
end
|
63
130
|
end
|
64
131
|
end
|
data/spec/bundler_spec.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/capistrano'
|
3
|
+
require 'capistrano/fanfare'
|
4
|
+
require 'capistrano/fanfare/database_yaml'
|
5
|
+
|
6
|
+
describe Capistrano::Fanfare::DatabaseYaml do
|
7
|
+
before do
|
8
|
+
@config = Capistrano::Configuration.new
|
9
|
+
Capistrano::Fanfare::DatabaseYaml.load_into(@config)
|
10
|
+
@config.extend(MiniTest::Capistrano::ConfigurationExtension)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "for namespace :db" do
|
14
|
+
describe "task :cp_database_yml" do
|
15
|
+
it "copies config/database.yml into :release_path" do
|
16
|
+
@config.set :shared_path, "/a/appattack/shared"
|
17
|
+
@config.set :release_path, "/a/appattack/releases/thisone"
|
18
|
+
@config.find_and_execute_task("db:cp_database_yml")
|
19
|
+
|
20
|
+
@config.must_have_run [
|
21
|
+
"mkdir -p /a/appattack/releases/thisone/config &&",
|
22
|
+
"cp /a/appattack/shared/config/database.yml",
|
23
|
+
"/a/appattack/releases/thisone/config/database.yml"
|
24
|
+
].join(' ')
|
25
|
+
end
|
26
|
+
|
27
|
+
it "gets called after deploy:update_code task" do
|
28
|
+
@config.must_have_callback_after "deploy:update_code", "db:cp_database_yml"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -17,28 +17,97 @@ describe Capistrano::Fanfare::Foreman::Strategy::Runit do
|
|
17
17
|
@config.set :shared_path, "/srv/fooapp/shared"
|
18
18
|
@config.set :runit_sv_path, "/srv/fooapp/shared/sv"
|
19
19
|
@config.set :runit_app_name, "fooapp_production"
|
20
|
+
@config.set :runit_service_path, "/home/foouser/service"
|
20
21
|
@config.set :user, "deploy"
|
21
22
|
strategy.export
|
22
23
|
|
23
24
|
@config.must_have_run [
|
25
|
+
"set -x &&",
|
26
|
+
"svp=/srv/fooapp/shared/sv &&",
|
24
27
|
"cd /srv/fooapp/releases/thisone &&",
|
25
28
|
"if [ -f Procfile ] ; then",
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
"rm -rf ${svp}-pre &&",
|
30
|
+
"mkdir -p ${svp}-pre &&",
|
31
|
+
"bin/foreman export runit ${svp}-pre",
|
32
|
+
"--app=fooapp_production --log=/srv/fooapp/shared/log",
|
33
|
+
"--user=deploy &&",
|
34
|
+
"set +x &&",
|
35
|
+
"egrep -lr ${svp}-pre ${svp}-pre | (xargs",
|
36
|
+
"sed -i \"s|${svp}-pre|${svp}|g\" || true) &&",
|
37
|
+
"(cd ${svp} ; find . -path '*/supervise' -type d -prune -o -type f | grep -v 'supervise$' | sort | xargs openssl sha) > /tmp/sv-dir-$$ &&",
|
38
|
+
"(cd ${svp}-pre ; find . -path '*/supervise' -type d -prune -o -type f | grep -v 'supervise$' | sort | xargs openssl sha) > /tmp/sv-pre-dir-$$ &&",
|
39
|
+
"set -x &&",
|
40
|
+
"if diff -q /tmp/sv-dir-$$ /tmp/sv-pre-dir-$$ >/dev/null ; then",
|
41
|
+
"echo '\\n===> Foreman export atrifacts are identical\\n' &&",
|
42
|
+
"rm -rf ${svp}-pre",
|
43
|
+
"; else",
|
44
|
+
"echo '\\n===> Updated Foreman export artifacts detected\\n' &&",
|
45
|
+
"echo '---> Stoping processes' &&",
|
46
|
+
"rm -f /home/foouser/service/fooapp_production-* &&",
|
47
|
+
"echo '---> Installing updated Foreman export artifacts' &&",
|
48
|
+
"rm -rf ${svp} && mv ${svp}-pre ${svp} &&",
|
49
|
+
"touch ${svp}/.symlink_boot",
|
50
|
+
"; fi &&",
|
51
|
+
"echo '---> Cleaning up' &&",
|
52
|
+
"rm -f /tmp/sv-{dir,pre-dir}-$$",
|
53
|
+
"; else",
|
54
|
+
"echo '>>>> A Procfile must exist in this project.' && exit 10",
|
55
|
+
"; fi"
|
33
56
|
].join(' ')
|
34
57
|
end
|
35
58
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
59
|
+
describe "#register" do
|
60
|
+
it "symlinks services in :runit_sv_path to :runit_service_path" do
|
61
|
+
@config.set :runit_sv_path, "/apps/foo/shared/sv"
|
62
|
+
@config.set :runit_service_path, "/home/foouser/service"
|
63
|
+
@config.captures_responses["if [ -f /apps/foo/shared/sv/.symlink_boot ] ; then echo true ; else echo false ; fi"] = "true\n"
|
64
|
+
strategy.register
|
65
|
+
|
66
|
+
@config.must_have_run [
|
67
|
+
"ln -snf /apps/foo/shared/sv/* /home/foouser/service/",
|
68
|
+
"rm -f /apps/foo/shared/sv/.symlink_boot"
|
69
|
+
].join(' && ')
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "with a symlink_boot" do
|
73
|
+
before do
|
74
|
+
@config.set :runit_sv_path, "/apps/foo/shared/sv"
|
75
|
+
@config.set :runit_service_path, "/home/foouser/service"
|
76
|
+
@config.after "deploy:start", "foreman:start"
|
77
|
+
@config.after "deploy:restart", "foreman:restart"
|
78
|
+
@config.captures_responses["if [ -f /apps/foo/shared/sv/.symlink_boot ] ; then echo true ; else echo false ; fi"] = "true\n"
|
79
|
+
end
|
40
80
|
|
41
|
-
|
81
|
+
it "removes the start callback" do
|
82
|
+
strategy.register
|
83
|
+
@config.wont_have_callback_after "foreman:start", "deploy:start"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "removes the restart callback" do
|
87
|
+
strategy.register
|
88
|
+
@config.wont_have_callback_after "foreman:restart", "deploy:restart"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "without a symlink_boot" do
|
93
|
+
before do
|
94
|
+
@config.set :runit_sv_path, "/apps/foo/shared/sv"
|
95
|
+
@config.set :runit_service_path, "/home/foouser/service"
|
96
|
+
@config.after "deploy:start", "foreman:start"
|
97
|
+
@config.after "deploy:restart", "foreman:restart"
|
98
|
+
@config.captures_responses["if [ -f /apps/foo/shared/sv/.symlink_boot ] ; then echo true ; else echo false ; fi"] = "false\n"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "preserves the start callback" do
|
102
|
+
strategy.register
|
103
|
+
@config.must_have_callback_after "deploy:start", "foreman:start"
|
104
|
+
end
|
105
|
+
|
106
|
+
it "preserves the restart callback" do
|
107
|
+
strategy.register
|
108
|
+
@config.must_have_callback_after "deploy:restart", "foreman:restart"
|
109
|
+
end
|
110
|
+
end
|
42
111
|
end
|
43
112
|
|
44
113
|
describe "#start" do
|
@@ -47,7 +116,10 @@ describe Capistrano::Fanfare::Foreman::Strategy::Runit do
|
|
47
116
|
@config.set :runit_app_name, "wuzzle_production"
|
48
117
|
strategy.start
|
49
118
|
|
50
|
-
@config.must_have_run
|
119
|
+
@config.must_have_run [
|
120
|
+
"sv start /home/foouser/service/wuzzle_production-*",
|
121
|
+
"(s=$? && echo \"Start exited with $s\" && exit $s)"
|
122
|
+
].join(' || ')
|
51
123
|
end
|
52
124
|
end
|
53
125
|
|
@@ -57,7 +129,10 @@ describe Capistrano::Fanfare::Foreman::Strategy::Runit do
|
|
57
129
|
@config.set :runit_app_name, "wuzzle_production"
|
58
130
|
strategy.stop
|
59
131
|
|
60
|
-
@config.must_have_run
|
132
|
+
@config.must_have_run [
|
133
|
+
"sv stop /home/foouser/service/wuzzle_production-*",
|
134
|
+
"(s=$? && echo \"Stop exited with $s\" && exit $s)"
|
135
|
+
].join(' || ')
|
61
136
|
end
|
62
137
|
end
|
63
138
|
|
@@ -67,7 +142,10 @@ describe Capistrano::Fanfare::Foreman::Strategy::Runit do
|
|
67
142
|
@config.set :runit_app_name, "wuzzle_production"
|
68
143
|
strategy.restart
|
69
144
|
|
70
|
-
@config.must_have_run
|
145
|
+
@config.must_have_run [
|
146
|
+
"sv restart /home/foouser/service/wuzzle_production-*",
|
147
|
+
"(s=$? && echo \"Restart exited with $s\" && exit $s)"
|
148
|
+
].join(' || ')
|
71
149
|
end
|
72
150
|
end
|
73
151
|
|
@@ -77,7 +155,10 @@ describe Capistrano::Fanfare::Foreman::Strategy::Runit do
|
|
77
155
|
@config.set :runit_app_name, "wuzzle_production"
|
78
156
|
strategy.ps
|
79
157
|
|
80
|
-
@config.must_have_run
|
158
|
+
@config.must_have_run [
|
159
|
+
"sv status /home/foouser/service/wuzzle_production-*",
|
160
|
+
"(s=$? && echo \"Status exited with $s\" && exit $s)"
|
161
|
+
].join(' || ')
|
81
162
|
end
|
82
163
|
end
|
83
164
|
end
|
data/spec/foreman_spec.rb
CHANGED
@@ -71,8 +71,8 @@ describe Capistrano::Fanfare::Foreman do
|
|
71
71
|
@config.must_have_run "cp /tmp/app/shared/env /tmp/app/releases/blah/.env"
|
72
72
|
end
|
73
73
|
|
74
|
-
it "gets called after deploy:
|
75
|
-
@config.must_have_callback_after "deploy:
|
74
|
+
it "gets called after deploy:finalize_update task" do
|
75
|
+
@config.must_have_callback_after "deploy:finalize_update", "foreman:cp_env"
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
@@ -111,6 +111,10 @@ describe Capistrano::Fanfare::Foreman do
|
|
111
111
|
|
112
112
|
strategy.verify
|
113
113
|
end
|
114
|
+
|
115
|
+
it "gets called after deploy:update_code task" do
|
116
|
+
@config.must_have_callback_after "deploy:update_code", "foreman:export"
|
117
|
+
end
|
114
118
|
end
|
115
119
|
|
116
120
|
describe "task :register" do
|
@@ -120,6 +124,14 @@ describe Capistrano::Fanfare::Foreman do
|
|
120
124
|
|
121
125
|
strategy.verify
|
122
126
|
end
|
127
|
+
|
128
|
+
it "gets called before deploy:start task" do
|
129
|
+
@config.must_have_callback_before "deploy:start", "foreman:register"
|
130
|
+
end
|
131
|
+
|
132
|
+
it "gets called before deploy:restart task" do
|
133
|
+
@config.must_have_callback_before "deploy:restart", "foreman:register"
|
134
|
+
end
|
123
135
|
end
|
124
136
|
|
125
137
|
describe "task :start" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-fanfare
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
16
|
-
requirement: &
|
16
|
+
requirement: &70250305558200 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.10.0.pre
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70250305558200
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capistrano_colors
|
27
|
-
requirement: &
|
27
|
+
requirement: &70250305557440 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.5'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70250305557440
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70250305556660 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.10.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70250305556660
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest-capistrano
|
49
|
-
requirement: &
|
49
|
+
requirement: &70250305555900 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0.0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70250305555900
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: timecop
|
60
|
-
requirement: &
|
60
|
+
requirement: &70250305555360 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0.3'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70250305555360
|
69
69
|
description: Capistrano recipes (with full test suite) for fanfare application deployment
|
70
70
|
framework
|
71
71
|
email:
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- capistrano-fanfare.gemspec
|
84
84
|
- lib/capistrano/fanfare.rb
|
85
85
|
- lib/capistrano/fanfare/bundler.rb
|
86
|
+
- lib/capistrano/fanfare/database_yaml.rb
|
86
87
|
- lib/capistrano/fanfare/defaults.rb
|
87
88
|
- lib/capistrano/fanfare/foreman.rb
|
88
89
|
- lib/capistrano/fanfare/foreman/strategy.rb
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- lib/capistrano/fanfare/version.rb
|
94
95
|
- lib/capistrano/recipes/deploy/strategy/git_style.rb
|
95
96
|
- spec/bundler_spec.rb
|
97
|
+
- spec/database_yaml_spec.rb
|
96
98
|
- spec/defaults_spec.rb
|
97
99
|
- spec/fixtures/Procfile
|
98
100
|
- spec/fixtures/fanfare/bark.rb
|
@@ -117,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
119
|
version: '0'
|
118
120
|
segments:
|
119
121
|
- 0
|
120
|
-
hash:
|
122
|
+
hash: -3823857243740536617
|
121
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
124
|
none: false
|
123
125
|
requirements:
|
@@ -126,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
128
|
version: '0'
|
127
129
|
segments:
|
128
130
|
- 0
|
129
|
-
hash:
|
131
|
+
hash: -3823857243740536617
|
130
132
|
requirements: []
|
131
133
|
rubyforge_project:
|
132
134
|
rubygems_version: 1.8.10
|
@@ -136,6 +138,7 @@ summary: Capistrano recipes (with full test suite) for fanfare application deplo
|
|
136
138
|
framework
|
137
139
|
test_files:
|
138
140
|
- spec/bundler_spec.rb
|
141
|
+
- spec/database_yaml_spec.rb
|
139
142
|
- spec/defaults_spec.rb
|
140
143
|
- spec/fixtures/Procfile
|
141
144
|
- spec/fixtures/fanfare/bark.rb
|