diff --git a/lib/capistrano/send.rb b/lib/capistrano/send.rb index f30c859..4442207 100644 --- a/lib/capistrano/send.rb +++ b/lib/capistrano/send.rb @@ -1,2 +1,3 @@ +require 'capistrano/send/mail' require 'capistrano/send/libnotify' require 'capistrano/send/notify-send' diff --git a/lib/capistrano/send/mail.rb b/lib/capistrano/send/mail.rb new file mode 100644 index 0000000..a0b2482 --- /dev/null +++ b/lib/capistrano/send/mail.rb @@ -0,0 +1,16 @@ +begin + require 'mail' +rescue LoadError +end + +module Capistrano + module Send + module Mail + def self.supported? + defined?(::Mail) + end + end + end +end + +load File.expand_path('../../tasks/mail.cap', __FILE__) diff --git a/lib/capistrano/tasks/mail.cap b/lib/capistrano/tasks/mail.cap new file mode 100644 index 0000000..1f163eb --- /dev/null +++ b/lib/capistrano/tasks/mail.cap @@ -0,0 +1,21 @@ +namespace :send do + namespace :mail do + desc "Send an email when deploy is finished" + task :notify do + if Capistrano::Send::Mail.supported? + config = fetch(:send_mail, {}) + + Mail.deliver do + to config[:to] + from config[:from] + subject "Deploy successful on #{fetch(:stage)}!" + body revision_log_message + + delivery_method config[:via] || :smtp, config[:via_options] || {} + end + end + end + end +end + +after 'deploy:finished', 'send:mail:notify'