Sha256: 5502602dd9377e9b891f6078fe5a574945bf6eb9f2d9612fda38b641c8d2a5d7

Contents?: true

Size: 1.99 KB

Versions: 107

Compression:

Stored size: 1.99 KB

Contents

require 'scout_apm'

module ScoutApm
  module DeployIntegrations
    class Capistrano2
      attr_reader :logger

      def initialize(logger)
        @logger = logger
        @cap = defined?(Capistrano::Configuration) ? ObjectSpace.each_object(Capistrano::Configuration).map.first : nil rescue nil
      end

      def name
        :capistrano_2
      end

      def version
        present? ? Capistrano::VERSION : nil
      end

      def present?
        if !@cap.nil? && @cap.is_a?(Capistrano::Configuration)
          require 'capistrano/version'
          defined?(Capistrano::VERSION) && Gem::Dependency.new('', '~> 2.0').match?('', Capistrano::VERSION.to_s)
        else
          return false
        end
        return true
      rescue
        return false
      end

      def install
        logger.debug "Initializing Capistrano2 Deploy Integration."
        @cap.load File.expand_path("../capistrano_2.cap", __FILE__)
      end

      def root
        '.'
      end

      def env
        @cap.fetch(:stage)
      end

      def found?
        true
      end

      def report
        if reporter.can_report?
          data = deploy_data
          logger.debug "Sending deploy hook data: #{data}"
          payload = ScoutApm::Serializers::DeploySerializer.serialize(data)
          reporter.report(payload, ScoutApm::Serializers::DeploySerializer::HTTP_HEADERS)
        else
          logger.warn "Unable to post deploy hook data"
        end
      end

      def reporter
        @reporter ||= ScoutApm::Reporter.new(:deploy_hook, ScoutApm::Agent.instance.config, @logger)
      end

      def deploy_data
        {:revision => current_revision, :branch => branch, :deployed_by => deployed_by}
      end

      def branch
        @cap.fetch(:branch)
      end

      def current_revision
        @cap.fetch(:current_revision) || `git rev-list --max-count=1 --abbrev-commit --abbrev=12 #{branch}`.chomp
      end

      def deployed_by
        ScoutApm::Agent.instance.config.value('deployed_by')
      end

    end
  end
end

Version data entries

107 entries across 107 versions & 1 rubygems

Version Path
scout_apm-2.1.7 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-3.0.0.pre0 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.1.6 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.1.5 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.2.0.pre3 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.1.4 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.1.3 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.1.2 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.2.0.pre2 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.2.0.pre1 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.1.1 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.2.0.pre0 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.1.0 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.0.0 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-1.6.8 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-1.6.7 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.0.0.pre8 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-1.6.6 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-1.6.5 lib/scout_apm/deploy_integrations/capistrano_2.rb
scout_apm-2.0.0.pre7 lib/scout_apm/deploy_integrations/capistrano_2.rb