slackistrano 0.1.12 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c083ad8d812b118fb281c5a0854423b18fbfe68
4
- data.tar.gz: 3c1734032ce8f8ebd498f5d23dd32e6b6516592b
3
+ metadata.gz: c2221a5e8c65f2a1a082d139cc9cdaf7bb266285
4
+ data.tar.gz: f6b272f31ed0920fb37c1df17830c2908b7f3631
5
5
  SHA512:
6
- metadata.gz: f7731d4c976a9b5883c04ed483b13c94f8cb0785f479c3d01a753183d0863f163d0326b0d197fefa4573c3adf14f97176ed359bf09ee972f9d02c3471051d37b
7
- data.tar.gz: 91793a4d0a8eaabfd79f33655269d5419134a6056449723e5f68ea355bed101ccefbfea4419b890fd2a5c97f03d48b273481d6d8d34e97c0a0b10d15ff8a7e39
6
+ metadata.gz: 6d128baa0d6b1605117c0f9fa5ead20d8b306b28672e5efb10fc7a6df6a672c47d1a7b449967960b373e7e417c673e25e83eed23af6e5147070ab3457aff350a
7
+ data.tar.gz: 7e696369664825849d4908e8d90c20abb48541ecfcda1047d064f4e99238217de7bf9e0bcb0ef673717d455e0a20657ded8cac0f07516b14c888966215e02429
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ # Slackistrano Change Log
2
+
3
+
4
+ 1.0.0
5
+ -----
6
+
7
+ - **BREAKING:** Renamed all `***_starting` settings to `***_updating`
8
+ - **BREAKING:** Renamed all `***_finished` settings to `***_updated`
9
+ - Added rollback options `***_reverting` and `***_reverted` [#19, #31]
10
+
data/README.md CHANGED
@@ -58,32 +58,56 @@ set :slack_token, "xxxxxxxxxxxxxxxxxxxxxxxx"
58
58
  set :slack_channel, '#general'
59
59
  ```
60
60
 
61
- Optionally, override the other slack settings:
61
+ Optionally, override the other slack settings.
62
62
 
63
63
  ```ruby
64
- set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
65
- set :slack_icon_emoji, -> { nil } # will override icon_url, Must be a string (ex: ':shipit:')
66
- set :slack_channel, -> { nil } # Channel to post to. Optional. Defaults to WebHook setting. Required if using Slackbot.
67
- set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
68
- set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
69
- set :slack_channel_failed, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
70
- set :slack_username, -> { 'Slackistrano' }
71
- set :slack_run_starting, -> { true }
72
- set :slack_run_finished, -> { true }
73
- set :slack_run_failed, -> { true }
74
- set :slack_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
75
- set :slack_msg_starting, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
76
- set :slack_msg_finished, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
77
- set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :rails_env, 'production'}" }
78
- set :slack_fields_starting, -> { [] }
79
- set :slack_fields_finished, -> { [] }
80
- set :slack_fields_failed, -> { [] }
81
- set :slack_fallback_starting, -> { nil }
82
- set :slack_fallback_finished, -> { nil }
83
- set :slack_fallback_failed, -> { nil }
84
- set :slack_title_starting, -> { nil }
85
- set :slack_title_finished, -> { nil }
86
- set :slack_title_failed, -> { nil }
64
+ set :slack_channel_updating, -> { nil } # Channel to post to. Defaults to :slack_channel.
65
+ set :slack_channel_reverting, -> { nil } # Channel to post to. Defaults to :slack_channel.
66
+ set :slack_channel_updated, -> { nil } # Channel to post to. Defaults to :slack_channel.
67
+ set :slack_channel_reverted, -> { nil } # Channel to post to. Defaults to :slack_channel.
68
+ set :slack_channel_failed, -> { nil } # Channel to post to. Defaults to :slack_channel.
69
+
70
+ set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
71
+ set :slack_icon_emoji, -> { nil } # Emoji to use. Overrides icon_url. Must be a string (ex: ':shipit:')
72
+ set :slack_username, -> { 'Slackistrano' }
73
+
74
+ set :slack_run_updating, -> { true } # Set to false to disable deploy starting message.
75
+ set :slack_run_reverting, -> { true } # Set to false to disable rollback starting message.
76
+ set :slack_run_updated, -> { true } # Set to false to disable deploy finished message.
77
+ set :slack_run_reverted, -> { true } # Set to false to disable rollback finished message.
78
+ set :slack_run_failed, -> { true } # Set to false to disable failure message.
79
+
80
+ set :slack_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
81
+
82
+ set :slack_msg_updating, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
83
+ set :slack_msg_reverting, -> { "#{fetch :slack_deploy_user} has started rolling back branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
84
+ set :slack_msg_updated, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
85
+ set :slack_msg_reverted, -> { "#{fetch :slack_deploy_user} has finished rolling back branch of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
86
+ set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} has failed to #{fetch :slack_deploy_or_rollback} branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
87
+
88
+ set :slack_fields_updating, -> { [] }
89
+ set :slack_fields_reverting, -> { [] }
90
+ set :slack_fields_updated, -> { [] }
91
+ set :slack_fields_reverted, -> { [] }
92
+ set :slack_fields_failed, -> { [] }
93
+
94
+ set :slack_fallback_updating, -> { nil }
95
+ set :slack_fallback_reverting, -> { nil }
96
+ set :slack_fallback_updated, -> { nil }
97
+ set :slack_fallback_reverted, -> { nil }
98
+ set :slack_fallback_failed, -> { nil }
99
+
100
+ set :slack_title_updating, -> { nil }
101
+ set :slack_title_reverting, -> { nil }
102
+ set :slack_title_updated, -> { nil }
103
+ set :slack_title_reverted, -> { nil }
104
+ set :slack_title_failed, -> { nil }
105
+
106
+ set :slack_pretext_updating, -> { nil }
107
+ set :slack_pretext_reverting, -> { nil }
108
+ set :slack_pretext_updated, -> { nil }
109
+ set :slack_pretext_reverted, -> { nil }
110
+ set :slack_pretext_failed, -> { nil }
87
111
  ```
88
112
 
89
113
  **Note**: You may wish to disable one of the notifications if another service (ex:
@@ -92,8 +116,10 @@ Honeybadger) also displays a deploy notification.
92
116
  Test your setup by running:
93
117
 
94
118
  ```bash
95
- $ cap production slack:deploy:starting
96
- $ cap production slack:deploy:finished
119
+ $ cap production slack:deploy:updating
120
+ $ cap production slack:deploy:reverting
121
+ $ cap production slack:deploy:updated
122
+ $ cap production slack:deploy:reverted
97
123
  $ cap production slack:deploy:failed
98
124
  ```
99
125
 
@@ -135,7 +161,7 @@ It will produce the following format:
135
161
 
136
162
  **Note 1:** *The `fallback` field is required in order to display notifications when using `fields`.*
137
163
 
138
- **Note 2:** *The `fields` requires configuration requires you to use webhooks.*
164
+ **Note 2:** *The `fields` configuration requires you to use webhooks.*
139
165
 
140
166
  More information: [https://api.slack.com/docs/attachments](https://api.slack.com/docs/attachments)
141
167
 
@@ -12,8 +12,9 @@ namespace :slack do
12
12
  [attachments]
13
13
  end
14
14
 
15
- task :starting do
16
- if fetch(:slack_run_starting)
15
+ task :updating do
16
+ set(:slack_deploy_or_rollback, 'deploy')
17
+ if fetch(:slack_run_updating)
17
18
  run_locally do
18
19
  Slackistrano.post(
19
20
  team: fetch(:slack_team),
@@ -21,19 +22,20 @@ namespace :slack do
21
22
  webhook: fetch(:slack_webhook),
22
23
  via_slackbot: fetch(:slack_via_slackbot),
23
24
  payload: {
24
- channel: fetch(:slack_channel_starting) || fetch(:slack_channel),
25
+ channel: fetch(:slack_channel_updating) || fetch(:slack_channel),
25
26
  username: fetch(:slack_username),
26
27
  icon_url: fetch(:slack_icon_url),
27
28
  icon_emoji: fetch(:slack_icon_emoji),
28
- attachments: make_attachments(:starting)
29
+ attachments: make_attachments(:updating)
29
30
  }
30
31
  )
31
32
  end
32
33
  end
33
34
  end
34
35
 
35
- task :finished do
36
- if fetch(:slack_run_finished)
36
+ task :reverting do
37
+ set(:slack_deploy_or_rollback, 'rollback')
38
+ if fetch(:slack_run_reverting)
37
39
  run_locally do
38
40
  Slackistrano.post(
39
41
  team: fetch(:slack_team),
@@ -41,11 +43,52 @@ namespace :slack do
41
43
  webhook: fetch(:slack_webhook),
42
44
  via_slackbot: fetch(:slack_via_slackbot),
43
45
  payload: {
44
- channel: fetch(:slack_channel_finished) || fetch(:slack_channel),
46
+ channel: fetch(:slack_channel_reverting) || fetch(:slack_channel),
45
47
  username: fetch(:slack_username),
46
48
  icon_url: fetch(:slack_icon_url),
47
49
  icon_emoji: fetch(:slack_icon_emoji),
48
- attachments: make_attachments(:finished, color: 'good')
50
+ attachments: make_attachments(:reverting)
51
+ }
52
+ )
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+ task :updated do
59
+ if fetch(:slack_run_updated)
60
+ run_locally do
61
+ Slackistrano.post(
62
+ team: fetch(:slack_team),
63
+ token: fetch(:slack_token),
64
+ webhook: fetch(:slack_webhook),
65
+ via_slackbot: fetch(:slack_via_slackbot),
66
+ payload: {
67
+ channel: fetch(:slack_channel_updated) || fetch(:slack_channel),
68
+ username: fetch(:slack_username),
69
+ icon_url: fetch(:slack_icon_url),
70
+ icon_emoji: fetch(:slack_icon_emoji),
71
+ attachments: make_attachments(:updated, color: 'good')
72
+ }
73
+ )
74
+ end
75
+ end
76
+ end
77
+
78
+ task :reverted do
79
+ if fetch(:slack_run_reverted)
80
+ run_locally do
81
+ Slackistrano.post(
82
+ team: fetch(:slack_team),
83
+ token: fetch(:slack_token),
84
+ webhook: fetch(:slack_webhook),
85
+ via_slackbot: fetch(:slack_via_slackbot),
86
+ payload: {
87
+ channel: fetch(:slack_channel_reverted) || fetch(:slack_channel),
88
+ username: fetch(:slack_username),
89
+ icon_url: fetch(:slack_icon_url),
90
+ icon_emoji: fetch(:slack_icon_emoji),
91
+ attachments: make_attachments(:reverted, color: '#4CBDEC')
49
92
  }
50
93
  )
51
94
  end
@@ -75,43 +118,72 @@ namespace :slack do
75
118
  end
76
119
  end
77
120
 
78
- after 'deploy:starting', 'slack:deploy:starting'
79
- after 'deploy:finished', 'slack:deploy:finished'
80
- after 'deploy:failed', 'slack:deploy:failed'
121
+ before 'deploy:updating', 'slack:deploy:updating'
122
+ before 'deploy:reverting', 'slack:deploy:reverting'
123
+ after 'deploy:finishing', 'slack:deploy:updated'
124
+ after 'deploy:finishing_rollback', 'slack:deploy:reverted'
125
+ after 'deploy:failed', 'slack:deploy:failed'
81
126
 
82
127
  namespace :load do
83
128
  task :defaults do
84
129
 
85
- set :slack_team, ->{ nil } # If URL is 'team.slack.com', value is 'team'.
86
- set :slack_token, ->{ nil } # Token from Incoming WebHooks.
87
- set :slack_webhook, ->{ nil } # Incoming WebHook URL.
88
- set :slack_via_slackbot, ->{ false } # Set to true to send the message via slackbot instead of webhook
89
-
90
- set :slack_channel, -> { nil } # Channel to post to. Optional. Defaults to WebHook setting.
91
- set :slack_channel_starting, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
92
- set :slack_channel_finished, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
93
- set :slack_channel_failed, -> { nil } # Channel to post to. Optional. Defaults to :slack_channel.
94
- set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
95
- set :slack_icon_emoji, -> { nil } # Emoji to use. Overrides icon_url. Must be a string (ex: ':shipit:')
96
- set :slack_username, -> { 'Slackistrano' }
97
- set :slack_run_starting, -> { true } # Set to false to disable starting message.
98
- set :slack_run_finished, -> { true } # Set to false to disable finished message.
99
- set :slack_run_failed, -> { true } # Set to false to disable failure message.
100
- set :slack_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
101
- set :slack_msg_starting, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
102
- set :slack_msg_finished, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
103
- set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} failed to deploy branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
104
- set :slack_fields_starting, -> { [] }
105
- set :slack_fields_finished, -> { [] }
106
- set :slack_fields_failed, -> { [] }
107
- set :slack_fallback_starting, -> { nil }
108
- set :slack_fallback_finished, -> { nil }
109
- set :slack_fallback_failed, -> { nil }
110
- set :slack_title_starting, -> { nil }
111
- set :slack_title_finished, -> { nil }
112
- set :slack_title_failed, -> { nil }
113
- set :slack_pretext_starting, -> { nil }
114
- set :slack_pretext_finished, -> { nil }
115
- set :slack_pretext_failed, -> { nil }
130
+ set :slack_team, -> { nil } # If URL is 'team.slack.com', value is 'team'.
131
+ set :slack_token, -> { nil } # Token from Incoming WebHooks.
132
+ set :slack_webhook, -> { nil } # Incoming WebHook URL.
133
+ set :slack_via_slackbot, -> { false } # Set to true to send the message via slackbot instead of webhook
134
+ set :slack_channel, -> { nil } # Channel to post to. Optional. Defaults to WebHook setting.
135
+
136
+ # Optional, overridable settings
137
+
138
+ set :slack_channel_updating, -> { nil } # Channel to post to. Defaults to :slack_channel.
139
+ set :slack_channel_reverting, -> { nil } # Channel to post to. Defaults to :slack_channel.
140
+ set :slack_channel_updated, -> { nil } # Channel to post to. Defaults to :slack_channel.
141
+ set :slack_channel_reverted, -> { nil } # Channel to post to. Defaults to :slack_channel.
142
+ set :slack_channel_failed, -> { nil } # Channel to post to. Defaults to :slack_channel.
143
+
144
+ set :slack_icon_url, -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' }
145
+ set :slack_icon_emoji, -> { nil } # Emoji to use. Overrides icon_url. Must be a string (ex: ':shipit:')
146
+ set :slack_username, -> { 'Slackistrano' }
147
+
148
+ set :slack_run_updating, -> { true } # Set to false to disable deploy starting message.
149
+ set :slack_run_reverting, -> { true } # Set to false to disable rollback starting message.
150
+ set :slack_run_updated, -> { true } # Set to false to disable deploy finished message.
151
+ set :slack_run_reverted, -> { true } # Set to false to disable rollback finished message.
152
+ set :slack_run_failed, -> { true } # Set to false to disable failure message.
153
+
154
+ set :slack_deploy_user, -> { ENV['USER'] || ENV['USERNAME'] }
155
+
156
+ set :slack_msg_updating, -> { "#{fetch :slack_deploy_user} has started deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
157
+ set :slack_msg_reverting, -> { "#{fetch :slack_deploy_user} has started rolling back branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
158
+ set :slack_msg_updated, -> { "#{fetch :slack_deploy_user} has finished deploying branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
159
+ set :slack_msg_reverted, -> { "#{fetch :slack_deploy_user} has finished rolling back branch of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
160
+
161
+ # :slack_or_deploy is set in several tasks above.
162
+ set :slack_msg_failed, -> { "#{fetch :slack_deploy_user} has failed to #{fetch(:slack_deploy_or_rollback) || 'deploy'} branch #{fetch :branch} of #{fetch :application} to #{fetch :stage, 'an unknown stage'}" }
163
+
164
+ set :slack_fields_updating, -> { [] }
165
+ set :slack_fields_reverting, -> { [] }
166
+ set :slack_fields_updated, -> { [] }
167
+ set :slack_fields_reverted, -> { [] }
168
+ set :slack_fields_failed, -> { [] }
169
+
170
+ set :slack_fallback_updating, -> { nil }
171
+ set :slack_fallback_reverting, -> { nil }
172
+ set :slack_fallback_updated, -> { nil }
173
+ set :slack_fallback_reverted, -> { nil }
174
+ set :slack_fallback_failed, -> { nil }
175
+
176
+ set :slack_title_updating, -> { nil }
177
+ set :slack_title_reverting, -> { nil }
178
+ set :slack_title_updated, -> { nil }
179
+ set :slack_title_reverted, -> { nil }
180
+ set :slack_title_failed, -> { nil }
181
+
182
+ set :slack_pretext_updating, -> { nil }
183
+ set :slack_pretext_reverting, -> { nil }
184
+ set :slack_pretext_updated, -> { nil }
185
+ set :slack_pretext_reverted, -> { nil }
186
+ set :slack_pretext_failed, -> { nil }
187
+
116
188
  end
117
189
  end
@@ -1,3 +1,3 @@
1
1
  module Slackistrano
2
- VERSION = '0.1.12'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,7 +1,11 @@
1
1
  namespace :deploy do
2
- task :starting do
2
+ task :updating do
3
3
  end
4
- task :finished do
4
+ task :reverting do
5
+ end
6
+ task :finishing do
7
+ end
8
+ task :finishing_rollback do
5
9
  end
6
10
  task :failed do
7
11
  end
data/spec/spec_helper.rb CHANGED
@@ -12,4 +12,6 @@ Dir['#{File.dirname(__FILE__)}/support/**/*.rb'].each {|f| require f}
12
12
 
13
13
  RSpec.configure do |config|
14
14
  config.order = 'random'
15
+ config.filter_run :focus
16
+ config.run_all_when_everything_filtered = true
15
17
  end
data/spec/tasks_spec.rb CHANGED
@@ -5,25 +5,34 @@ describe Slackistrano do
5
5
  Rake::Task['load:defaults'].invoke
6
6
  end
7
7
 
8
- it "invokes slack:deploy:starting after deploy:starting" do
9
- set :slack_run_starting, ->{ true }
10
- expect(Slackistrano).to receive :post
11
- Rake::Task['deploy:starting'].execute
12
- end
8
+ describe "before/after hooks" do
13
9
 
14
- it "invokes slack:deploy:finished after deploy:finished" do
15
- set :slack_run_finished, ->{ true }
16
- expect(Slackistrano).to receive :post
17
- Rake::Task['deploy:finished'].execute
18
- end
10
+ it "invokes slack:deploy:updating before deploy:updating" do
11
+ expect(Rake::Task['deploy:updating'].prerequisites).to include 'slack:deploy:updating'
12
+ end
13
+
14
+ it "invokes slack:deploy:reverting before deploy:reverting" do
15
+ expect(Rake::Task['deploy:reverting'].prerequisites).to include 'slack:deploy:reverting'
16
+ end
17
+
18
+ it "invokes slack:deploy:updated after deploy:finishing" do
19
+ expect(Rake::Task['slack:deploy:updated']).to receive(:invoke)
20
+ Rake::Task['deploy:finishing'].execute
21
+ end
22
+
23
+ it "invokes slack:deploy:reverted after deploy:finishing_rollback" do
24
+ expect(Rake::Task['slack:deploy:reverted']).to receive(:invoke)
25
+ Rake::Task['deploy:finishing_rollback'].execute
26
+ end
27
+
28
+ it "invokes slack:deploy:failed after deploy:failed" do
29
+ expect(Rake::Task['slack:deploy:failed']).to receive(:invoke)
30
+ Rake::Task['deploy:failed'].execute
31
+ end
19
32
 
20
- it "invokes slack:deploy:failed after deploy:failed" do
21
- set :slack_run_failed, ->{ true }
22
- expect(Slackistrano).to receive :post
23
- Rake::Task['deploy:failed'].execute
24
33
  end
25
34
 
26
- %w[starting finished failed].each do |stage|
35
+ %w[updating reverting updated reverted failed].each do |stage|
27
36
  it "posts to slack on slack:deploy:#{stage}" do
28
37
  set "slack_run_#{stage}".to_sym, ->{ true }
29
38
  expect(Slackistrano).to receive :post
@@ -38,11 +47,14 @@ describe Slackistrano do
38
47
  end
39
48
 
40
49
  [ # stage, color, channel
41
- ['starting', nil, nil],
42
- ['finished', 'good', nil],
50
+ ['updating', nil, nil],
51
+ ['reverting', nil, nil],
52
+ ['updated', 'good', nil],
53
+ ['reverted', '#4CBDEC', nil],
43
54
  ['failed', 'danger', nil],
44
- ['starting', nil, 'starting_channel'],
45
- ['finished', 'good', 'finished_channel'],
55
+ ['updating', nil, 'starting_channel'],
56
+ ['updated', 'good', 'finished_channel'],
57
+ ['reverted', '#4CBDEC', 'rollback_channel'],
46
58
  ['failed', 'danger', 'failed_channel'],
47
59
  ].each do |stage, color, channel_for_stage|
48
60
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slackistrano
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Hallstrom
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-22 00:00:00.000000000 Z
11
+ date: 2015-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
77
  - ".travis.yml"
78
+ - CHANGELOG.md
78
79
  - Gemfile
79
80
  - LICENSE.txt
80
81
  - README.md