Sha256: 72e016e928f549bf225e76b92c6ccde07b3216e956604dea2cb815594ac4cde6

Contents?: true

Size: 1.53 KB

Versions: 1

Compression:

Stored size: 1.53 KB

Contents

require 'capistrano'
require 'instrumental_agent'

if Capistrano::Configuration.instance
  Capistrano::Configuration.instance.load do
    namespace :instrumental do
      namespace :util do
        desc "marker for beginning of deploy"
        task :deploy_start do
          @instrumental_deploy_start = Time.now
        end

        desc "marker for end of deploy"
        task :deploy_end do
          @instrumental_deploy_end = Time.now
        end
      end

      desc "send a notice to instrumental about the deploy"
      task :record_deploy_notice do
        @instrumental_deploy_start ||= Time.now
        @instrumental_deploy_end   ||= Time.now
        deploy_duration_in_seconds = (@instrumental_deploy_end - @instrumental_deploy_start).to_i
        deployer = Etc.getlogin.chomp
        agent_options = { :synchronous => true }
        agent_options[:collector] = instrumental_host if exists?(:instrumental_host)
        agent = Instrumental::Agent.new(instrumental_key, agent_options)
        agent.notice("#{deployer} deployed #{current_revision}",
                     @instrumental_deploy_start,
                     deploy_duration_in_seconds)
        logger.info("Notified Instrumental of deployment")
      end
    end

    before "deploy", "instrumental:util:deploy_start"
    after  "deploy", "instrumental:util:deploy_end"
    before "deploy:migrations", "instrumental:util:deploy_start"
    after  "deploy:migrations", "instrumental:util:deploy_end"
    after  "instrumental:util:deploy_end", "instrumental:record_deploy_notice"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
instrumental_agent-0.7.1 lib/instrumental/capistrano.rb