capistrano-mailgun 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -1
- data/README.md +26 -0
- data/lib/capistrano-mailgun.rb +16 -4
- data/lib/capistrano-mailgun/version.rb +1 -1
- data/lib/templates/default.html.erb +1 -1
- data/spec/capistrano-mailgun_spec.rb +54 -0
- metadata +4 -4
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -95,6 +95,24 @@ above is just an example.
|
|
95
95
|
|
96
96
|
Also, notice the use of `mailgun.build_recipients`. See documentation below for more information.
|
97
97
|
|
98
|
+
## Disabling Emails
|
99
|
+
|
100
|
+
If you want to prevent sending any email notifications for any reason, you can set the `mailgun_off`
|
101
|
+
Capistrano variable either via the `set` command or with the `-s` commandline options when calling
|
102
|
+
`cap`.
|
103
|
+
|
104
|
+
If using the Capistrano multistage plugin, you can put the following into one of your stage files
|
105
|
+
that you want to disable notifications for:
|
106
|
+
|
107
|
+
set :mailgun_off, true
|
108
|
+
|
109
|
+
Or, when doing a normal deploy and you want to prevent notifications for this deploy, you can do the
|
110
|
+
following:
|
111
|
+
|
112
|
+
cap deploy -s mailgun_off=1
|
113
|
+
|
114
|
+
Heads up: Setting `mailgun_off` to **anything** will disable emails. This includes setting it to `false`.
|
115
|
+
|
98
116
|
## Capistrano Variables
|
99
117
|
|
100
118
|
`Capistrano::Mailgun` leverages variables defined in Capistrano to reduce the amount of configuration
|
@@ -191,6 +209,14 @@ You would call it in the following manner:
|
|
191
209
|
|
192
210
|
cap deploy -s mailgun_message="Fixes that really nasty bug where our site does not work"
|
193
211
|
|
212
|
+
### mailgun_off
|
213
|
+
|
214
|
+
Setting `mailgun_off` to any value, either via the `-s` commandline switch or with `set` in your recipe
|
215
|
+
will completely disable any Mailgun notifications, regardless of whether they're sent with `mailgun.send_email`
|
216
|
+
or with the built-in `mailgun_notify` task.
|
217
|
+
|
218
|
+
See above `Disabling Emails` section for examples.
|
219
|
+
|
194
220
|
### github_url
|
195
221
|
|
196
222
|
If your project is hosted on Github and you'd like to have links to the Github repository in the deployment
|
data/lib/capistrano-mailgun.rb
CHANGED
@@ -57,7 +57,10 @@ module Capistrano
|
|
57
57
|
# Supports all options that the Mailgun API supports. In addition, it also accepts:
|
58
58
|
# * +:text_template+ -- the path to the template for the text body. It will be processed and interpolated and set the +text+ field when doing the API call.
|
59
59
|
# * +:html_template+ -- the path to the template for the html body. It will be processed and interpolated and set the +html+ field when doing the API call.
|
60
|
+
#
|
61
|
+
# If +mailgun_off+ is set, this function will do absolutely nothing.
|
60
62
|
def send_email(options)
|
63
|
+
return if exists?(:mailgun_off)
|
61
64
|
options = process_send_email_options(options)
|
62
65
|
|
63
66
|
RestClient.post build_mailgun_uri( mailgun_api_key, mailgun_domain ), options
|
@@ -106,14 +109,23 @@ module Capistrano
|
|
106
109
|
end
|
107
110
|
|
108
111
|
# git log between +first_ref+ to +last_ref+
|
112
|
+
# memoizes the output so this function can be called multiple times without re-running
|
113
|
+
# FIXME: memoization does not account for arguments
|
114
|
+
#
|
115
|
+
# returns an array of 2-element arrays in the form of
|
116
|
+
# [ ref, log_text ]
|
109
117
|
def log_output(first_ref, last_ref)
|
110
118
|
return @log_output unless @log_output.nil?
|
111
119
|
|
112
|
-
|
120
|
+
begin
|
121
|
+
log_output = run_locally("git log --oneline #{ first_ref }..#{ last_ref }")
|
113
122
|
|
114
|
-
|
115
|
-
|
116
|
-
|
123
|
+
@log_output = log_output = log_output.split("\n").map do |line|
|
124
|
+
fields = line.split("\s", 2)
|
125
|
+
[ fields[0], fields[1] ]
|
126
|
+
end
|
127
|
+
rescue
|
128
|
+
[ [ 'n/a', 'Log output not available.' ] ]
|
117
129
|
end
|
118
130
|
end
|
119
131
|
|
@@ -132,7 +132,7 @@
|
|
132
132
|
<ul>
|
133
133
|
<% mailgun.log_output(latest_revision, real_revision).each do |line| %>
|
134
134
|
<li>
|
135
|
-
<% if fetch(:github_url, nil) %>
|
135
|
+
<% if fetch(:github_url, nil) && line[0] != 'n/a' %>
|
136
136
|
<a href="<%= github_url %>/commit/<%= line[0] %>"><%= line[0] %></a>
|
137
137
|
<% else %>
|
138
138
|
<%= line[0] %>
|
@@ -140,6 +140,37 @@ describe Capistrano::Mailgun do
|
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
143
|
+
context "mailgun_off" do
|
144
|
+
|
145
|
+
context "when it is set" do
|
146
|
+
before do
|
147
|
+
config.load do
|
148
|
+
set :mailgun_off, true
|
149
|
+
end
|
150
|
+
|
151
|
+
mailgun.stub!(:proces_send_email_options => true)
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should not send emails when mailgun_off is set" do
|
155
|
+
RestClient.should_not_receive(:post)
|
156
|
+
mailgun.send_email({})
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
context "when it is not set" do
|
162
|
+
before do
|
163
|
+
mailgun.stub!(:process_send_email_options => true)
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should send emails when mailgun_off is not set" do
|
167
|
+
RestClient.should_receive(:post)
|
168
|
+
mailgun.send_email({})
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
143
174
|
end
|
144
175
|
|
145
176
|
context "#notify_of_deploy" do
|
@@ -269,4 +300,27 @@ describe Capistrano::Mailgun do
|
|
269
300
|
|
270
301
|
end
|
271
302
|
|
303
|
+
context "#log_output" do
|
304
|
+
|
305
|
+
context "when it raises an error" do
|
306
|
+
|
307
|
+
before do
|
308
|
+
mailgun.should_receive(:run_locally).and_raise(Capistrano::LocalArgumentError.new)
|
309
|
+
end
|
310
|
+
|
311
|
+
it "should only return a 1-element array if an error is returned from git-log" do
|
312
|
+
result = mailgun.log_output('a', 'b')
|
313
|
+
|
314
|
+
result.class.should == Array
|
315
|
+
result.length.should == 1
|
316
|
+
end
|
317
|
+
|
318
|
+
it "should capture the error and not raise if git-log fails" do
|
319
|
+
lambda { mailgun.log_output('a', 'b') }.should_not raise_error
|
320
|
+
end
|
321
|
+
|
322
|
+
end
|
323
|
+
|
324
|
+
end
|
325
|
+
|
272
326
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-mailgun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
@@ -83,7 +83,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
83
83
|
version: '0'
|
84
84
|
segments:
|
85
85
|
- 0
|
86
|
-
hash:
|
86
|
+
hash: -2899719465359232847
|
87
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
88
|
none: false
|
89
89
|
requirements:
|
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
92
|
version: '0'
|
93
93
|
segments:
|
94
94
|
- 0
|
95
|
-
hash:
|
95
|
+
hash: -2899719465359232847
|
96
96
|
requirements: []
|
97
97
|
rubyforge_project:
|
98
98
|
rubygems_version: 1.8.24
|