capistrano_mailer 3.1.10 → 3.2.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.
- data/README.rdoc +34 -54
- data/Rakefile +3 -3
- data/VERSION.yml +2 -2
- data/about.yml +1 -1
- data/capistrano_mailer.gemspec +4 -4
- data/lib/cap_mailer.rb +123 -81
- data/lib/capistrano/mailer.rb +3 -5
- data/views/cap_mailer/notification_email.text.html.erb +10 -9
- metadata +6 -3
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Capistrano Mailer
|
1
|
+
= Capistrano Mailer
|
2
2
|
|
3
3
|
* For Capistrano Deployment Email Notification
|
4
4
|
* It is a Capistrano Plugin / Ruby Gem that requires ActionMailer
|
@@ -22,7 +22,7 @@ The first time you deploy to a server (a 'cold' deploy) capistrano mailer will c
|
|
22
22
|
|
23
23
|
== Home Page
|
24
24
|
|
25
|
-
http://github.com/pboling/capistrano_mailer
|
25
|
+
http://github.com/pboling/capistrano_mailer
|
26
26
|
|
27
27
|
|
28
28
|
== Credit where Credit is Due
|
@@ -62,7 +62,7 @@ Then cd to your rails app to optionally freeze the gem into your app:
|
|
62
62
|
|
63
63
|
rake gems:freeze GEM=capistrano_mailer
|
64
64
|
# You do NOT need to add a config.gem line to environment.rb for capistrano mailer,
|
65
|
-
# But in order to use the gems:freeze task you DO need
|
65
|
+
# But in order to use the gems:freeze task you DO need to add it as a config.gem, at least temporarily.
|
66
66
|
|
67
67
|
Plugin using Git:
|
68
68
|
|
@@ -75,9 +75,14 @@ Using SVN (deprecated, repository is no longer updated):
|
|
75
75
|
|
76
76
|
== Upgrading
|
77
77
|
|
78
|
-
From version
|
78
|
+
From version 3.1.x to version 3.2.x
|
79
79
|
|
80
|
-
1. Update the way CapistranoMailer is configured using the new method: CapMailer.
|
80
|
+
1. Update the way CapistranoMailer is configured using the new method: CapMailer.configure (see Usage below).
|
81
|
+
2. require the cap mailer config file (see Usage below)
|
82
|
+
|
83
|
+
From version 2.1.0 to version 3.1.x:
|
84
|
+
|
85
|
+
1. Update the way CapistranoMailer is configured using the new method: CapMailer.configure_capistrano_mailer (changed in later versions to just 'configure') (see Usage below).
|
81
86
|
2. Update the require statement at the top of deploy.rb, see below (note for plugin change from capistrano_mailer to capistrano/mailer).
|
82
87
|
3. Change the mailer.send to mailer.send_notification_email in your cap recipe.
|
83
88
|
|
@@ -87,17 +92,21 @@ From version 2.1.0 to version 3.x.x:
|
|
87
92
|
|
88
93
|
2. Add this line to the top of your config/deploy.rb:
|
89
94
|
|
90
|
-
# For gem:
|
91
|
-
# You do NOT need to register the gem in your environment file using config.gem
|
92
|
-
require 'capistrano/mailer'
|
93
|
-
|
94
95
|
# For plugin:
|
95
96
|
# You must make capistrano_mailer's libraries available in Ruby's load path. This is one way to do that:
|
96
97
|
# Add to the top of your config/deploy.rb file:
|
97
98
|
$:.unshift 'vendor/plugins/capistrano_mailer/lib'
|
99
|
+
|
100
|
+
# then for gem or plugin:
|
101
|
+
####################################
|
102
|
+
# Capistrano Plugins go here
|
98
103
|
require 'capistrano/mailer'
|
104
|
+
#configure capistrano_mailer:
|
105
|
+
# The configuration file can go anywhere, but in past versions of the gem it was required to be in the config/ dir.
|
106
|
+
require 'config/cap_mailer_settings'
|
107
|
+
####################################
|
99
108
|
|
100
|
-
3.
|
109
|
+
3. Configure Caistrano Mailer in the settings file required in step 2:
|
101
110
|
|
102
111
|
# If installed as a plugin might need the require here as well
|
103
112
|
|
@@ -112,7 +121,7 @@ From version 2.1.0 to version 3.x.x:
|
|
112
121
|
:authentication => :login }
|
113
122
|
ActionMailer::Base.default_charset = "utf-8"# or "latin1" or whatever you are using
|
114
123
|
|
115
|
-
CapMailer.
|
124
|
+
CapMailer.configure do |config|
|
116
125
|
config[:recipient_addresses] = ["dev1@example.com"]
|
117
126
|
# NOTE: THERE IS A BUG IN RAILS 2.3.3 which forces us to NOT use anything but a simple email address string for the sender address.
|
118
127
|
# https://rails.lighthouseapp.com/projects/8994/tickets/2340
|
@@ -139,48 +148,7 @@ From version 2.1.0 to version 3.x.x:
|
|
139
148
|
desc "Send email notification of deployment (only send variables you want to be in the email)"
|
140
149
|
task :notify, :roles => :app do
|
141
150
|
show.me # this sets the task_name variable
|
142
|
-
mailer.send_notification_email(
|
143
|
-
:rails_env => rails_env,
|
144
|
-
:host => host,
|
145
|
-
:task_name => task_name,
|
146
|
-
:application => application,
|
147
|
-
:repository => repository,
|
148
|
-
:scm => scm,
|
149
|
-
:deploy_via => deploy_via,
|
150
|
-
:deploy_to => deploy_to,
|
151
|
-
:revision => revision,
|
152
|
-
:real_revision => real_revision,
|
153
|
-
:release_name => release_name,
|
154
|
-
:version_dir => version_dir,
|
155
|
-
:shared_dir => shared_dir,
|
156
|
-
:current_dir => current_dir,
|
157
|
-
:releases_path => releases_path,
|
158
|
-
:shared_path => shared_path,
|
159
|
-
:current_path => current_path,
|
160
|
-
:release_path => release_path,
|
161
|
-
:releases => releases,
|
162
|
-
:current_release => current_release,
|
163
|
-
:previous_release => previous_release,
|
164
|
-
:current_revision => current_revision,
|
165
|
-
:latest_revision => latest_revision,
|
166
|
-
:previous_revision => previous_revision,
|
167
|
-
:run_method => run_method,
|
168
|
-
:latest_release => latest_release,
|
169
|
-
],[ # Send some custom vars you've setup in your deploy.rb to be sent out with the notification email!
|
170
|
-
# will be rendered as a section of the email called 'Release Data'
|
171
|
-
#:some_other_var1 => some_other_var1,
|
172
|
-
#:some_other_var2 => some_other_var2,
|
173
|
-
#:some_other_var3 => some_other_var3
|
174
|
-
],[ # Send some more custom vars you've setup in your deploy.rb to be sent out with the notification email!
|
175
|
-
# will be rendered as a section of the email called 'Extra Information'
|
176
|
-
#:some_other_var4 => some_other_var4,
|
177
|
-
#:some_other_var5 => some_other_var5,
|
178
|
-
#:some_other_var6 => some_other_var6
|
179
|
-
],[ # and even more!!!
|
180
|
-
# these will not be rendered as a section, but will be passed to the email template in the @data hash,
|
181
|
-
# and be available there if you want to write your own template
|
182
|
-
]
|
183
|
-
)
|
151
|
+
mailer.send_notification_email(self)
|
184
152
|
end
|
185
153
|
|
186
154
|
...
|
@@ -189,13 +157,15 @@ From version 2.1.0 to version 3.x.x:
|
|
189
157
|
Make _sure_ you've defined `rails_env`, `repository`, `deploy_to`, `host`, and `application`.
|
190
158
|
task_name is defined by the show:me task above, and the others are defined behind the scenes by Capistrano!
|
191
159
|
|
192
|
-
The only parameter to mailer.send_notification_email that is *required* is the first
|
160
|
+
The only parameter to mailer.send_notification_email that is *required* is the first. _Minimally_ you need to define the capistrano variables:
|
193
161
|
:rails_env
|
194
162
|
:repository
|
195
163
|
:task_name (provided by the show:me task included in this readme)
|
196
164
|
:deploy_to
|
197
165
|
:host
|
198
166
|
:application
|
167
|
+
|
168
|
+
But there are tons of others - just take a look at lib/mailer/cap_mailer.rb.
|
199
169
|
|
200
170
|
If anyone has a cool way of recording the *output* into a capistrano accessible variable,
|
201
171
|
so that it can be shoved into the release email that would be an excellent contribution!
|
@@ -222,6 +192,16 @@ From version 2.1.0 to version 3.x.x:
|
|
222
192
|
|
223
193
|
Take a look at the templates that comes with the plugin to see how it is done (views/cap_mailer/...)
|
224
194
|
|
195
|
+
== Authors
|
196
|
+
|
197
|
+
Peter Boling (pboling) - Wrote original
|
198
|
+
Dave Nolan (textgoeshere) - lots of refactoring merged into 3.2 release
|
199
|
+
|
200
|
+
== Contributors
|
201
|
+
|
202
|
+
Dustin Deyoung - HTML Email Templates
|
203
|
+
mixonix - SCMs compatibility
|
204
|
+
greut - SCMs compatibility
|
225
205
|
|
226
206
|
----------------------------------------------------------------------------------
|
227
207
|
This plugin is a collaboration between Sagebit, LLC (http://www.sagebit.com) and Peter Boling (http://www.peterboling.com).
|
data/Rakefile
CHANGED
@@ -8,9 +8,9 @@ begin
|
|
8
8
|
gemspec.name = "capistrano_mailer"
|
9
9
|
gemspec.summary = "Capistrano Deployment Email Notification"
|
10
10
|
gemspec.description = %q{Capistrano Deployment Email Notification. Keep the whole team informed of each release!}
|
11
|
-
gemspec.email = "peter.boling@gmail.com"
|
11
|
+
gemspec.email = ["peter.boling@gmail.com", "dave@textgoeshere.org.uk"]
|
12
12
|
gemspec.homepage = "http://github.com/pboling/capistrano_mailer"
|
13
|
-
gemspec.authors = ["Peter Boling"]
|
13
|
+
gemspec.authors = ["Peter Boling", "Dave Nolan"]
|
14
14
|
gemspec.add_dependency 'actionmailer'
|
15
15
|
gemspec.files = ["README.rdoc",
|
16
16
|
"capistrano_mailer.gemspec",
|
@@ -29,7 +29,7 @@ begin
|
|
29
29
|
end
|
30
30
|
Jeweler::GemcutterTasks.new
|
31
31
|
rescue LoadError
|
32
|
-
puts "Jeweler not available. Install it with: sudo gem install
|
32
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
33
33
|
end
|
34
34
|
|
35
35
|
desc 'Default: run unit tests.'
|
data/VERSION.yml
CHANGED
data/about.yml
CHANGED
data/capistrano_mailer.gemspec
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{capistrano_mailer}
|
8
|
-
s.version = "3.1
|
8
|
+
s.version = "3.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Peter Boling"]
|
12
|
-
s.date = %q{2010-01-
|
11
|
+
s.authors = ["Peter Boling", "Dave Nolan"]
|
12
|
+
s.date = %q{2010-01-13}
|
13
13
|
s.description = %q{Capistrano Deployment Email Notification. Keep the whole team informed of each release!}
|
14
|
-
s.email =
|
14
|
+
s.email = ["peter.boling@gmail.com", "dave@textgoeshere.org.uk"]
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.rdoc"
|
17
17
|
]
|
data/lib/cap_mailer.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class CapMailer < ActionMailer::Base
|
2
2
|
|
3
|
-
@@
|
3
|
+
@@default_base_config ||= {
|
4
4
|
:sender_address => %("#{(defined?(Rails) ? Rails.env.capitalize : defined?(RAILS_ENV) ? RAILS_ENV.capitalize : defined?(ENV) ? ENV['RAILS_ENV'] : "")} Capistrano Deployment" <capistrano.mailer@example.com>),
|
5
5
|
:recipient_addresses => [],
|
6
6
|
# Customize the subject line
|
@@ -13,122 +13,164 @@ class CapMailer < ActionMailer::Base
|
|
13
13
|
:template_root => "#{File.dirname(__FILE__)}/../views"
|
14
14
|
}
|
15
15
|
|
16
|
-
cattr_accessor :
|
16
|
+
cattr_accessor :default_base_config
|
17
|
+
attr_accessor :config, :options
|
18
|
+
attr_accessor :date, :time, :inferred_command, :task_name, :repo_end
|
19
|
+
|
20
|
+
def self.configure(&block)
|
21
|
+
yield @@default_base_config
|
22
|
+
end
|
17
23
|
|
18
24
|
def self.configure_capistrano_mailer(&block)
|
19
|
-
|
25
|
+
puts "Deprecated 'configure_capistrano_mailer'. Please update your capistrano_mailer configuration to use 'configure' instead of 'configure_capistrano_mailer'"
|
20
26
|
end
|
21
27
|
|
22
|
-
self.template_root =
|
28
|
+
self.template_root = default_base_config[:template_root]
|
23
29
|
|
24
30
|
def self.reloadable?() false end
|
25
|
-
|
26
|
-
def notification_email(
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
|
32
|
+
def notification_email(cap, config = {}, *args)
|
33
|
+
@options = { :release_data => {}, :extra_information => {}, :data => {} }.merge(args.extract_options!)
|
34
|
+
@config = default_base_config.merge(config.reverse_merge({
|
35
|
+
:rails_env => cap.rails_env,
|
36
|
+
:host => cap.host,
|
37
|
+
:task_name => cap.task_name,
|
38
|
+
:application => cap.application,
|
39
|
+
:repository => cap.repository,
|
40
|
+
:scm => cap.scm,
|
41
|
+
:deploy_via => cap.deploy_via,
|
42
|
+
:deploy_to => cap.deploy_to,
|
43
|
+
:revision => cap.revision,
|
44
|
+
:real_revision => cap.real_revision,
|
45
|
+
:release_name => cap.release_name,
|
46
|
+
:version_dir => cap.version_dir,
|
47
|
+
:shared_dir => cap.shared_dir,
|
48
|
+
:current_dir => cap.current_dir,
|
49
|
+
:releases_path => cap.releases_path,
|
50
|
+
:shared_path => cap.shared_path,
|
51
|
+
:current_path => cap.current_path,
|
52
|
+
:release_path => cap.release_path,
|
53
|
+
:releases => cap.releases,
|
54
|
+
:current_release => cap.current_release,
|
55
|
+
:previous_release => cap.previous_release,
|
56
|
+
:current_revision => cap.current_revision,
|
57
|
+
:latest_revision => cap.latest_revision,
|
58
|
+
:previous_revision => cap.previous_revision,
|
59
|
+
:run_method => cap.run_method,
|
60
|
+
:latest_release => cap.latest_release
|
61
|
+
#This does not appear to be a capistrano variable:
|
62
|
+
#:site_url => cap.site_url
|
63
|
+
}))
|
64
|
+
|
65
|
+
@date = Date.today.to_s
|
66
|
+
@time = Time.now.strftime("%I:%M %p").to_s
|
67
|
+
@inferred_command = "cap #{@config[:rails_env]} #{@config[:task_name]}"
|
68
|
+
@task_name = @config[:task_name] || "unknown"
|
69
|
+
|
70
|
+
repo = @config[:repository]
|
71
|
+
x = repo.include?('/') ? repo.rindex('/') - 1 : repo.length
|
72
|
+
front = repo.slice(0..x)
|
73
|
+
back = repo.sub(front, '')
|
74
|
+
unless back == 'trunk'
|
75
|
+
x = front.include?('/') ? front.rindex('/') - 1 : front.length
|
76
|
+
front = front.slice(0..x)
|
77
|
+
end
|
78
|
+
@repo_end = repo.sub(front, '')
|
79
|
+
|
80
|
+
subject subject_line
|
81
|
+
recipients @config[:recipient_addresses]
|
82
|
+
from @config[:sender_address]
|
83
|
+
content_type @config[:email_content_type]
|
84
|
+
|
85
|
+
body body_data_hash
|
34
86
|
end
|
35
87
|
|
36
88
|
private
|
89
|
+
|
90
|
+
def subject_line
|
91
|
+
config[:subject] || "[#{config[:application]}] #{inferred_command} by #{config[:user]}"
|
92
|
+
end
|
37
93
|
|
38
|
-
def body_data_hash
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
front = repo.slice(0..x)
|
45
|
-
back = repo.sub(front, '')
|
46
|
-
unless back == 'trunk'
|
47
|
-
x = front.include?('/') ? front.rindex('/') - 1 : front.length
|
48
|
-
front = front.slice(0..x)
|
49
|
-
end
|
50
|
-
repo_end = repo.sub(front, '')
|
51
|
-
task_name = cap_vars.first[:task_name] || "unknown"
|
52
|
-
|
53
|
-
return data.merge({
|
54
|
-
:section_data => section_data_hash(cap_vars, date, time, task_name, inferred_command, repo_end, release_data, extra_information),
|
55
|
-
:date => date,
|
56
|
-
:time => time,
|
57
|
-
:task_name => task_name,
|
94
|
+
def body_data_hash
|
95
|
+
options[:data].merge({
|
96
|
+
:section_data => section_data_hash,
|
97
|
+
:date => date,
|
98
|
+
:time => time,
|
99
|
+
:task_name => task_name,
|
58
100
|
:inferred_command => inferred_command,
|
59
|
-
:repo_end
|
60
|
-
:site_name
|
61
|
-
:
|
62
|
-
:
|
101
|
+
:repo_end => repo_end,
|
102
|
+
:site_name => config[:site_name],
|
103
|
+
:site_url => config[:site_url],
|
104
|
+
:application => config[:application],
|
105
|
+
:sections => config[:sections]
|
63
106
|
})
|
64
107
|
end
|
65
108
|
|
66
|
-
def section_data_hash
|
109
|
+
def section_data_hash
|
67
110
|
{
|
68
|
-
:deployment
|
69
|
-
:source_control
|
70
|
-
:latest_release
|
71
|
-
:previous_release
|
72
|
-
:other_deployment_info
|
73
|
-
:release_data
|
74
|
-
:extra_information
|
111
|
+
:deployment => section_hash_deployment,
|
112
|
+
:source_control => section_hash_source_control,
|
113
|
+
:latest_release => section_hash_latest_release,
|
114
|
+
:previous_release => section_hash_previous_release,
|
115
|
+
:other_deployment_info => section_hash_other_deployment_info,
|
116
|
+
:release_data => options[:release_data],
|
117
|
+
:extra_information => options[:extra_information]
|
75
118
|
}
|
76
119
|
end
|
77
120
|
|
78
|
-
def section_hash_deployment
|
121
|
+
def section_hash_deployment
|
79
122
|
{
|
80
|
-
:date
|
81
|
-
:time
|
82
|
-
:rails_env
|
83
|
-
:task_name
|
123
|
+
:date => date,
|
124
|
+
:time => time,
|
125
|
+
:rails_env => config[:rails_env],
|
126
|
+
:task_name => task_name,
|
84
127
|
:inferred_command => inferred_command,
|
85
|
-
:host
|
86
|
-
:release_name
|
128
|
+
:host => config[:host],
|
129
|
+
:release_name => config[:release_name]
|
87
130
|
}
|
88
131
|
end
|
89
132
|
|
90
|
-
def section_hash_source_control
|
133
|
+
def section_hash_source_control
|
91
134
|
{
|
92
|
-
:revision
|
93
|
-
:released
|
94
|
-
:repository
|
95
|
-
:branch
|
96
|
-
:scm
|
97
|
-
:deploy_via
|
98
|
-
:deploy_to
|
135
|
+
:revision => config[:revision],
|
136
|
+
:released => repo_end,
|
137
|
+
:repository => config[:repository],
|
138
|
+
:branch => config[:branch],
|
139
|
+
:scm => config[:scm],
|
140
|
+
:deploy_via => config[:deploy_via],
|
141
|
+
:deploy_to => config[:deploy_to]
|
99
142
|
}
|
100
143
|
end
|
101
144
|
|
102
|
-
def section_hash_latest_release
|
145
|
+
def section_hash_latest_release
|
103
146
|
{
|
104
|
-
:latest_release
|
105
|
-
:latest_revision
|
106
|
-
:release_path
|
107
|
-
:real_revision
|
108
|
-
:current_path
|
147
|
+
:latest_release => config[:latest_release],
|
148
|
+
:latest_revision => config[:latest_revision],
|
149
|
+
:release_path => config[:release_path],
|
150
|
+
:real_revision => config[:real_revision],
|
151
|
+
:current_path => config[:current_path]
|
109
152
|
}
|
110
153
|
end
|
111
154
|
|
112
|
-
def section_hash_previous_release
|
155
|
+
def section_hash_previous_release
|
113
156
|
{
|
114
|
-
:current_release
|
115
|
-
:current_revision
|
116
|
-
:previous_release
|
117
|
-
:previous_revision
|
118
|
-
:releases
|
157
|
+
:current_release => config[:current_release],
|
158
|
+
:current_revision => config[:current_revision],
|
159
|
+
:previous_release => config[:previous_release],
|
160
|
+
:previous_revision => config[:previous_revision],
|
161
|
+
:releases => config[:releases]
|
119
162
|
}
|
120
163
|
end
|
121
164
|
|
122
|
-
def section_hash_other_deployment_info
|
165
|
+
def section_hash_other_deployment_info
|
123
166
|
{
|
124
|
-
:version_dir
|
125
|
-
:shared_dir
|
126
|
-
:current_dir
|
127
|
-
:releases_path
|
128
|
-
:shared_path
|
129
|
-
:run_method
|
130
|
-
:ip_address
|
167
|
+
:version_dir => config[:version_dir],
|
168
|
+
:shared_dir => config[:shared_dir],
|
169
|
+
:current_dir => config[:current_dir],
|
170
|
+
:releases_path => config[:releases_path],
|
171
|
+
:shared_path => config[:shared_path],
|
172
|
+
:run_method => config[:run_method],
|
173
|
+
:ip_address => config[:ip_address]
|
131
174
|
}
|
132
175
|
end
|
133
|
-
|
134
176
|
end
|
data/lib/capistrano/mailer.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rubygems' unless defined?(Rubygems)
|
2
2
|
require 'capistrano' unless defined?(Capistrano)
|
3
|
+
require 'active_support'
|
3
4
|
|
4
5
|
unless Capistrano::Configuration.respond_to?(:instance)
|
5
6
|
abort "capistrano/mailer requires Capistrano 2"
|
@@ -9,15 +10,12 @@ require 'action_mailer' unless defined?(ActionMailer)
|
|
9
10
|
|
10
11
|
require 'cap_mailer' unless defined?(CapMailer)
|
11
12
|
|
12
|
-
# ActionMailer configuration in the rails app
|
13
|
-
require 'config/cap_mailer_settings'
|
14
|
-
|
15
13
|
|
16
14
|
module Capistrano
|
17
15
|
class Configuration
|
18
16
|
module CapistranoMailer
|
19
|
-
def send_notification_email(
|
20
|
-
CapMailer.deliver_notification_email(
|
17
|
+
def send_notification_email(cap, config = {}, *args)
|
18
|
+
CapMailer.deliver_notification_email(cap, config, args)
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
@@ -7,15 +7,17 @@
|
|
7
7
|
<body style="font: 14px normal Helvetica, Arial, Sans; background: #999;">
|
8
8
|
|
9
9
|
<div style="width:800px; margin: 10px auto; background: #fff; border: 10px solid #aaa;">
|
10
|
-
|
10
|
+
|
11
11
|
<h1 style="clear: both; margin: 0; padding: 40px 20px 5px 20px; border-bottom: 1px dotted; background: #ccc;">
|
12
12
|
<%= @site_name %> <%=@task_name.titleize unless @task_name.nil? %>
|
13
13
|
</h1>
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
<% unless @site_url.nil? %>
|
16
|
+
<p style="margin: 8px 0 20px 20px; padding: 0px; font-style: italic;" >
|
17
|
+
View site: <a href="<%= @site_url -%>"><%= @site_url -%></a>
|
18
|
+
</p>
|
19
|
+
<% end %>
|
20
|
+
|
19
21
|
<p style="margin: 10px 20px; font-weight: bold;">Released: <%= @date %> at <%= @time %></p>
|
20
22
|
|
21
23
|
<%= @sections.map { |section|
|
@@ -30,9 +32,8 @@
|
|
30
32
|
}.join unless @sections.nil? %>
|
31
33
|
</div>
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
</div>
|
35
|
+
<p style="margin: 8px 0 20px 20px; padding: 0px; font-style: italic;" >
|
36
|
+
Brought to you by: <a href="http://github.com/textgoeshere/capistrano_mailer">Capistrano Mailer</a>
|
37
|
+
</p>
|
37
38
|
</body>
|
38
39
|
</html>
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1
|
4
|
+
version: 3.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
8
|
+
- Dave Nolan
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
12
|
|
12
|
-
date: 2010-01-
|
13
|
+
date: 2010-01-13 00:00:00 -05:00
|
13
14
|
default_executable:
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
@@ -23,7 +24,9 @@ dependencies:
|
|
23
24
|
version: "0"
|
24
25
|
version:
|
25
26
|
description: Capistrano Deployment Email Notification. Keep the whole team informed of each release!
|
26
|
-
email:
|
27
|
+
email:
|
28
|
+
- peter.boling@gmail.com
|
29
|
+
- dave@textgoeshere.org.uk
|
27
30
|
executables: []
|
28
31
|
|
29
32
|
extensions: []
|