recap 1.0.12 → 1.1.0
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/lib/recap/tasks/bootstrap.rb +7 -7
- data/lib/recap/tasks/foreman.rb +9 -4
- data/lib/recap/tasks/preflight.rb +1 -1
- data/lib/recap/version.rb +1 -1
- data/spec/tasks/foreman_spec.rb +41 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83721ec6476d41384eea2d9b1eaf90aa1f85db56
|
4
|
+
data.tar.gz: 45d5968cdcdc68bc37ff9ab3a7ad0213256a6090
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20772b8733768f091517741501fab00f540e7331f2ffc78d17da02dbd0a9cbbc93fc7fb040d144388cd31b70764aaa6a00c775a40ae824415846edc132489119
|
7
|
+
data.tar.gz: 678bd37303fe05e240130e231f813df9e335c70c205a7241ed815f233fdda083ab3915bbf8aa3d2363c3b59f17c5b2cabe21d3dd950a8e50f01100675873d94f
|
@@ -40,18 +40,18 @@ module Recap::Tasks::Bootstrap
|
|
40
40
|
# `env:edit` tasks). The script loads the `.env` file in the users home folder, creates
|
41
41
|
# a new copy with `export ` prefixed to each line, and sources this new copy.
|
42
42
|
put_as_app %{
|
43
|
-
if [ -s
|
44
|
-
sed -e 's/\\r//g' -e 's/^/export /g'
|
45
|
-
.
|
43
|
+
if [ -s #{application_home}/.env ]; then
|
44
|
+
sed -e 's/\\r//g' -e 's/^/export /g' #{application_home}/.env > #{application_home}/.recap-env-export
|
45
|
+
. #{application_home}/.recap-env-export
|
46
46
|
fi
|
47
47
|
}, "#{application_home}/.recap"
|
48
48
|
|
49
49
|
# Finally, `.profile` needs to source the `.recap` script, so that the configuration environment is
|
50
50
|
# available whenever the environment is loaded.
|
51
|
-
as_app "touch .profile", "
|
51
|
+
as_app "touch .profile", "#{application_home}"
|
52
52
|
|
53
|
-
if exit_code("grep '\\.
|
54
|
-
as_app %{echo ".
|
53
|
+
if exit_code("grep '\\. #{application_home}/\\.recap' #{application_home}/.profile") != "0"
|
54
|
+
as_app %{echo ". #{application_home}/.recap" >> .profile}, "#{application_home}"
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -67,7 +67,7 @@ fi
|
|
67
67
|
sudo "usermod --append -G #{application_group} #{remote_username}"
|
68
68
|
|
69
69
|
if repository.match /github\.com/
|
70
|
-
run "(mkdir -p
|
70
|
+
run "(mkdir -p #{application_home}/.ssh && touch #{application_home}/.ssh/known_hosts && ssh-keygen -f #{application_home}/.ssh/known_hosts -H -F github.com | grep 'github.com') || ssh-keyscan -H github.com > #{application_home}/.ssh/known_hosts"
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
data/lib/recap/tasks/foreman.rb
CHANGED
@@ -12,6 +12,11 @@ module Recap::Tasks::Foreman
|
|
12
12
|
# Foreman startup scripts are exported in `upstart` format by default.
|
13
13
|
set(:foreman_export_format, "upstart")
|
14
14
|
|
15
|
+
# Foreman startup scripts are generated based on the standard templates by default
|
16
|
+
set(:foreman_template, nil)
|
17
|
+
|
18
|
+
set(:foreman_template_option) { foreman_template ? "--template #{foreman_template}" : nil}
|
19
|
+
|
15
20
|
# Scripts are exported (as the the application user) to a temporary location first.
|
16
21
|
set(:foreman_tmp_location) { "#{deploy_to}/tmp/foreman" }
|
17
22
|
|
@@ -19,12 +24,12 @@ module Recap::Tasks::Foreman
|
|
19
24
|
set(:foreman_export_location, "/etc/init")
|
20
25
|
|
21
26
|
# The standard foreman export.
|
22
|
-
set(:foreman_export_command) { "./bin/foreman export #{foreman_export_format} #{foreman_tmp_location} --procfile #{procfile} --app #{application} --user #{application_user} --log #{deploy_to}/log" }
|
27
|
+
set(:foreman_export_command) { "./bin/foreman export #{foreman_export_format} #{foreman_tmp_location} --procfile #{procfile} --app #{application} --user #{application_user} --log #{deploy_to}/log #{foreman_template_option}" }
|
23
28
|
|
24
29
|
namespace :export do
|
25
|
-
# After each deployment, the startup scripts are exported if the `Procfile`
|
30
|
+
# After each deployment, the startup scripts are exported if either the `Procfile` or any custom Foreman templates have changed.
|
26
31
|
task :if_changed do
|
27
|
-
if trigger_update?(procfile)
|
32
|
+
if trigger_update?(procfile) || (foreman_template && trigger_update?(foreman_template))
|
28
33
|
top.foreman.export.default
|
29
34
|
end
|
30
35
|
end
|
@@ -71,4 +76,4 @@ module Recap::Tasks::Foreman
|
|
71
76
|
after 'deploy:update_code', 'foreman:export:if_changed'
|
72
77
|
after 'deploy:restart', 'foreman:restart'
|
73
78
|
end
|
74
|
-
end
|
79
|
+
end
|
data/lib/recap/version.rb
CHANGED
data/spec/tasks/foreman_spec.rb
CHANGED
@@ -38,6 +38,23 @@ describe Recap::Tasks::Foreman do
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
describe '#foreman_template' do
|
42
|
+
it 'defaults to nil' do
|
43
|
+
config.foreman_template.should be_nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#foreman_template_option' do
|
48
|
+
it 'is nil if foreman_template is unset' do
|
49
|
+
config.foreman_template_option.should be_nil
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'points at the foreman_template if set' do
|
53
|
+
config.set :foreman_template, '/path/to/template'
|
54
|
+
config.foreman_template_option.should eql('--template /path/to/template')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
41
58
|
describe '#foreman_export_location' do
|
42
59
|
it 'defaults to /etc/init' do
|
43
60
|
config.foreman_export_location.should eql('/etc/init')
|
@@ -52,6 +69,7 @@ describe Recap::Tasks::Foreman do
|
|
52
69
|
|
53
70
|
describe '#foreman_export_command' do
|
54
71
|
before :each do
|
72
|
+
config.set :foreman_template_option, ''
|
55
73
|
config.set :foreman_export_format, '<export-format>'
|
56
74
|
config.set :foreman_tmp_location, '<tmp-location>'
|
57
75
|
end
|
@@ -79,11 +97,20 @@ describe Recap::Tasks::Foreman do
|
|
79
97
|
config.set :deploy_to, '/custom/deploy/location'
|
80
98
|
config.foreman_export_command.index("--log /custom/deploy/location/log").should_not be_nil
|
81
99
|
end
|
100
|
+
|
101
|
+
it 'includes --template option if set' do
|
102
|
+
config.set :foreman_template_option, '--template /path/to/template'
|
103
|
+
config.foreman_export_command.index("--template /path/to/template").should_not be_nil
|
104
|
+
end
|
82
105
|
end
|
83
106
|
end
|
84
107
|
|
85
108
|
describe 'Tasks' do
|
86
109
|
describe 'foreman:export:if_changed' do
|
110
|
+
before :each do
|
111
|
+
namespace.stubs(:trigger_update?).with(config.procfile).returns(false)
|
112
|
+
end
|
113
|
+
|
87
114
|
it 'calls foreman:export if the Procfile has changed' do
|
88
115
|
namespace.stubs(:trigger_update?).with(config.procfile).returns(true)
|
89
116
|
namespace.export.expects(:default)
|
@@ -91,10 +118,22 @@ describe Recap::Tasks::Foreman do
|
|
91
118
|
end
|
92
119
|
|
93
120
|
it 'skips foreman:export if the Procfile has not changed' do
|
94
|
-
namespace.stubs(:trigger_update?).with(config.procfile).returns(false)
|
95
121
|
namespace.export.expects(:default).never
|
96
122
|
config.find_and_execute_task('foreman:export:if_changed')
|
97
123
|
end
|
124
|
+
|
125
|
+
describe 'foreman_template is set' do
|
126
|
+
before :each do
|
127
|
+
config.set :foreman_template, 'config/foreman/upstart'
|
128
|
+
namespace.stubs(:trigger_update?).with(config.foreman_template).returns(false)
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'calls foreman:export if any of the templates have changed' do
|
132
|
+
namespace.stubs(:trigger_update?).with(config.foreman_template).returns(true)
|
133
|
+
namespace.export.expects(:default)
|
134
|
+
config.find_and_execute_task('foreman:export:if_changed')
|
135
|
+
end
|
136
|
+
end
|
98
137
|
end
|
99
138
|
|
100
139
|
describe 'foreman:export' do
|
@@ -158,4 +197,4 @@ describe Recap::Tasks::Foreman do
|
|
158
197
|
end
|
159
198
|
end
|
160
199
|
end
|
161
|
-
end
|
200
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Ward
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|