- =begin
- Capistrano deployment email notifier for Rails 3
- Do you need to send email notifications after application deployments?
- Christopher Sexton developed a Simple Capistrano email notifier for rails. You can find details at http://www.codeography.com/2010/03/24/simple-capistrano-email-notifier-for-rails.html.
- Here is Rails 3 port of the notifier.
- The notifier sends an email after application deployment has been completed.
- How to use it?
- 1. Add this file to config/deploy folder.
- 2. Update the file with your google credentials and from email address.
- 3. Add the following content to config/deploy.rb.
- require 'config/deploy/cap_notify.rb'
- # add email addresses for people who should receive deployment notifications
- set :notify_emails, ["EMAIL1@YOURDOMAIN.COM", "EMAIL2@YOURDOMAIN.COM"]
- after :deploy, 'deploy:send_notification'
- # Create task to send a notification
- namespace :deploy do
- desc "Send email notification"
- task :send_notification do
- Notifier.deploy_notification(self).deliver
- end
- end
- 4. Update deploy.rb with destination email addresses for the notifications.
- 5. To test run this command:
- cap deploy:send_notification
- =end
- require "action_mailer"
- ActionMailer::Base.delivery_method = :smtp
- ActionMailer::Base.smtp_settings = {
- :enable_starttls_auto => true,
- :tls => true,
- :address => "smtp.gmail.com",
- :port => 587,
- :domain => "gmail.com",
- :authentication => "plain",
- :user_name => "YOUR USER NAME",
- :password => "YOUR PASSWORD"
- }
- class Notifier < ActionMailer::Base
- default :from => "YOUR FROM EMAIL"
- def deploy_notification(cap_vars)
- now = Time.now
- msg = "Performed a deploy operation on #{now.strftime("%m/%d/%Y")} at #{now.strftime("%I:%M %p")} to #{cap_vars.host}"
- mail(:to => cap_vars.notify_emails,
- :subject => "Deployed #{cap_vars.application} to #{cap_vars.stage}") do |format|
- format.text { render :text => msg}
- format.html { render :text => "<p>" + msg + "<\p>"}
- end
- end
- end