paratrooper 2.4.0 → 2.4.1
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/CHANGELOG.md +4 -0
- data/README.md +3 -3
- data/lib/paratrooper/deploy.rb +7 -3
- data/lib/paratrooper/version.rb +1 -1
- data/script/bootstrap +5 -0
- data/script/test +9 -0
- data/spec/paratrooper/deploy_spec.rb +38 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56e1f38d2b16ea6a3a7ea3f638ca46299dbb593d
|
4
|
+
data.tar.gz: 52ca5fd168124dffdec952b953e56bbbeac73479
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5363c5346e761369f59b7d1dc57568dd0a18f6bc47f9125d7a4b898111e82153fd4aba5fe20005d3f6a1502ce9906d48cd99241a8bb8de51bf490a159e1251c7
|
7
|
+
data.tar.gz: c3ed3e7e73606aca077b6264a2313863f66dacdca8b5428c1d085072f130d25fda734f1323e420cb56f3cd3487b7b4d3124b13f539e2c15942aa394d975508ad
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
[](http://badge.fury.io/rb/paratrooper)
|
4
4
|
[](https://travis-ci.org/mattpolito/paratrooper)
|
5
5
|
[](https://codeclimate.com/github/mattpolito/paratrooper)
|
6
|
+
[](https://gitter.im/mattpolito/paratrooper)
|
6
7
|
|
7
8
|
Simplify your [Heroku][] deploy with quick and concise deployment rake tasks.
|
8
9
|
|
@@ -131,12 +132,10 @@ You can use the object's methods any way you'd like, but we've provided a sensib
|
|
131
132
|
|
132
133
|
This will perform the following tasks:
|
133
134
|
|
134
|
-
* Activate maintenance mode
|
135
135
|
* Create or update a git tag (if provided)
|
136
136
|
* Push changes to Heroku
|
137
137
|
* Run database migrations if any have been added to db/migrate
|
138
138
|
* Restart the application
|
139
|
-
* Deactivate maintenance mode
|
140
139
|
* Warm application instance
|
141
140
|
|
142
141
|
### Example Usage
|
@@ -213,7 +212,7 @@ namespace :deploy do
|
|
213
212
|
end
|
214
213
|
```
|
215
214
|
|
216
|
-
Or maybe you just want to run a rake task on your application
|
215
|
+
Or maybe you just want to run a rake task on your application. Since this task may take a moment to complete it's probably a good idea to throw up a maintenance page.
|
217
216
|
|
218
217
|
```ruby
|
219
218
|
# lib/tasks/deploy.rake
|
@@ -222,6 +221,7 @@ namespace :deploy do
|
|
222
221
|
desc 'Deploy app in production environment'
|
223
222
|
task :production do
|
224
223
|
deployment = Paratrooper::Deploy.new("amazing-production-app") do |deploy|
|
224
|
+
deploy.maintenance = true
|
225
225
|
deploy.add_callback(:after_teardown) do |output|
|
226
226
|
output.display("Running some task that needs to run")
|
227
227
|
deploy.add_remote_task("rake some:task:to:run")
|
data/lib/paratrooper/deploy.rb
CHANGED
@@ -14,7 +14,7 @@ module Paratrooper
|
|
14
14
|
|
15
15
|
attr_accessor :app_name, :notifiers, :system_caller, :heroku, :tag_name,
|
16
16
|
:match_tag_name, :protocol, :deployment_host, :migration_check, :debug,
|
17
|
-
:screen_notifier, :branch_name, :http_client
|
17
|
+
:screen_notifier, :branch_name, :http_client, :maintenance
|
18
18
|
|
19
19
|
alias_method :tag=, :tag_name=
|
20
20
|
alias_method :match_tag=, :match_tag_name=
|
@@ -46,6 +46,9 @@ module Paratrooper
|
|
46
46
|
# (optional, default: 'heroku.com').
|
47
47
|
# :migration_check - Object responsible for checking pending
|
48
48
|
# migrations (optional).
|
49
|
+
# :maintenance - If true, show maintenance page when pending
|
50
|
+
# migrations exists. False by default (optional).
|
51
|
+
# migrations (optional).
|
49
52
|
# :api_key - String version of heroku api key.
|
50
53
|
# (default: looks in local Netrc file).
|
51
54
|
# :http_client - Object responsible for making http calls
|
@@ -65,6 +68,7 @@ module Paratrooper
|
|
65
68
|
@debug = options[:debug] || false
|
66
69
|
@migration_check = options[:migration_check] || PendingMigrationCheck.new(match_tag_name, heroku, system_caller)
|
67
70
|
@http_client = options[:http_client] || HttpClientWrapper.new
|
71
|
+
@maintenance = options[:maintenance] || false
|
68
72
|
|
69
73
|
block.call(self) if block_given?
|
70
74
|
end
|
@@ -89,7 +93,7 @@ module Paratrooper
|
|
89
93
|
# Public: Activates Heroku maintenance mode.
|
90
94
|
#
|
91
95
|
def activate_maintenance_mode
|
92
|
-
return unless pending_migrations?
|
96
|
+
return unless maintenance && pending_migrations?
|
93
97
|
callback(:activate_maintenance_mode) do
|
94
98
|
notify(:activate_maintenance_mode)
|
95
99
|
heroku.app_maintenance_on
|
@@ -205,7 +209,7 @@ module Paratrooper
|
|
205
209
|
|
206
210
|
private
|
207
211
|
def app_url
|
208
|
-
heroku.app_url
|
212
|
+
heroku.app_url.sub(/\A\*\./, 'www.')
|
209
213
|
end
|
210
214
|
|
211
215
|
def callback(name, &block)
|
data/lib/paratrooper/version.rb
CHANGED
data/script/bootstrap
ADDED
data/script/test
ADDED
@@ -127,8 +127,8 @@ describe Paratrooper::Deploy do
|
|
127
127
|
end
|
128
128
|
|
129
129
|
describe "#activate_maintenance_mode" do
|
130
|
-
context "when
|
131
|
-
let(:options) { {
|
130
|
+
context "when maintenance option is 'true'" do
|
131
|
+
let(:options) { { maintenance: true } }
|
132
132
|
|
133
133
|
context "with pending migrations" do
|
134
134
|
before do
|
@@ -162,6 +162,42 @@ describe Paratrooper::Deploy do
|
|
162
162
|
end
|
163
163
|
end
|
164
164
|
end
|
165
|
+
|
166
|
+
context "when maintenance option is false" do
|
167
|
+
let(:options) { { maintenance: false } }
|
168
|
+
|
169
|
+
before do
|
170
|
+
migration_check.stub(:migrations_waiting?).and_return(true)
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'does not send notification' do
|
174
|
+
deployer.should_not_receive(:notify).with(:activate_maintenance_mode)
|
175
|
+
deployer.activate_maintenance_mode
|
176
|
+
end
|
177
|
+
|
178
|
+
it "does not make a call to heroku to turn on maintenance mode" do
|
179
|
+
heroku.should_not_receive(:app_maintenance_on)
|
180
|
+
deployer.activate_maintenance_mode
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context "when maintenance option is left as default" do
|
185
|
+
let(:options) { { } }
|
186
|
+
|
187
|
+
before do
|
188
|
+
migration_check.stub(:migrations_waiting?).and_return(true)
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'does not send notification' do
|
192
|
+
deployer.should_not_receive(:notify).with(:activate_maintenance_mode)
|
193
|
+
deployer.activate_maintenance_mode
|
194
|
+
end
|
195
|
+
|
196
|
+
it "does not make a call to heroku to turn on maintenance mode" do
|
197
|
+
heroku.should_not_receive(:app_maintenance_on)
|
198
|
+
deployer.activate_maintenance_mode
|
199
|
+
end
|
200
|
+
end
|
165
201
|
end
|
166
202
|
|
167
203
|
describe "#deactivate_maintenance_mode" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paratrooper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Polito
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -138,6 +138,8 @@ files:
|
|
138
138
|
- lib/paratrooper/system_caller.rb
|
139
139
|
- lib/paratrooper/version.rb
|
140
140
|
- paratrooper.gemspec
|
141
|
+
- script/bootstrap
|
142
|
+
- script/test
|
141
143
|
- spec/fixtures/netrc
|
142
144
|
- spec/paratrooper/deploy_spec.rb
|
143
145
|
- spec/paratrooper/heroku_wrapper_spec.rb
|