Sha256: 00be8840fb6ff692b29a7e57f1c9e0685cb2dc7d43d1e8dce47d782a9998848b

Contents?: true

Size: 1.93 KB

Versions: 9

Compression:

Stored size: 1.93 KB

Contents

# Defines deploy:notify_honeybadger which will send information about the deploy to Honeybadger.
require 'capistrano'

module Honeybadger
  module Capistrano
    def self.load_into(configuration)
      configuration.load do
        after "deploy",            "honeybadger:deploy"
        after "deploy:migrations", "honeybadger:deploy"

        namespace :honeybadger do
          desc <<-DESC
            Notify Honeybadger of the deployment by running the notification on the REMOTE machine.
              - Run remotely so we use remote API keys, environment, etc.
          DESC
          task :deploy, :except => { :no_release => true } do
            rails_env = fetch(:rails_env, "production")
            honeybadger_env = fetch(:honeybadger_env, fetch(:rails_env, "production"))
            local_user = ENV['USER'] || ENV['USERNAME']
            executable = RUBY_PLATFORM.downcase.include?('mswin') ? fetch(:rake, 'rake.bat') : fetch(:rake, 'rake')
            directory = configuration.current_release
            notify_command = "cd #{directory}; #{executable} RAILS_ENV=#{rails_env} honeybadger:deploy TO=#{honeybadger_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}"
            notify_command << " DRY_RUN=true" if dry_run
            notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
            logger.info "Notifying Honeybadger of Deploy (#{notify_command})"
            if configuration.dry_run
              logger.info "DRY RUN: Notification not actually run."
            else
              result = ""
              run(notify_command, :once => true) { |ch, stream, data| result << data }
              # TODO: Check if SSL is active on account via result content.
            end
            logger.info "Honeybadger Notification Complete."
          end
        end
      end
    end
  end
end

if Capistrano::Configuration.instance
  Honeybadger::Capistrano.load_into(Capistrano::Configuration.instance)
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
honeybadger-1.6.0 lib/honeybadger/capistrano.rb
honeybadger-1.5.0 lib/honeybadger/capistrano.rb
honeybadger-1.4.0 lib/honeybadger/capistrano.rb
honeybadger-1.3.1 lib/honeybadger/capistrano.rb
honeybadger-1.3.0 lib/honeybadger/capistrano.rb
honeybadger-1.2.1 lib/honeybadger/capistrano.rb
honeybadger-1.2.0 lib/honeybadger/capistrano.rb
honeybadger-1.1.0 lib/honeybadger/capistrano.rb
honeybadger-1.0.0 lib/honeybadger/capistrano.rb