Sha256: 846a2ae04f6f02fc54587f817846133afb6bb36e9195aa2210b4e2a93619d461

Contents?: true

Size: 1.24 KB

Versions: 6

Compression:

Stored size: 1.24 KB

Contents

module PlainApm
  ##
  # Tracks current revision of the app.
  #
  # This enables per-deploy metrics segmentation and checking
  # for performance regressions.
  module Hooks
    class Deploy
      ##
      # Collect once, immediately on install.
      def install
        collect
      end

      def collect
        result = git_revision || hg_revision || return

        tool, revision = *result

        Agent.instance.collect(
          {
            "source" => tool,
            "revision" => revision,
            "name" => "deploy",
            "started_at" => Time.now.to_f,
            "finished_at" => Time.now.to_f
          }
        )
      end

      private

      # TODO: other deploy mechanisms
      #
      # Also, we might not be in the app root.
      def git_revision
        return unless File.exist?(".git")

        rev = `git rev-parse --short=8 HEAD`.strip

        return if rev.empty?

        ["git", rev]
      rescue Error::ENOENT # No git installed
        nil
      end

      def hg_revision
        return unless File.exist?(".hg")

        rev = `hg log -l 1 -r . -T '{node}'`.strip

        return if rev.empty?

        ["hg", rev]
      rescue Error::ENOENT # No mercurial installed
        nil
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
plain_apm-0.6.3 lib/plain_apm/hooks/deploy.rb
plain_apm-0.6.2 lib/plain_apm/hooks/deploy.rb
plain_apm-0.6.1 lib/plain_apm/hooks/deploy.rb
plain_apm-0.5.7 lib/plain_apm/hooks/deploy.rb
plain_apm-0.5.6 lib/plain_apm/hooks/deploy.rb
plain_apm-0.5.5 lib/plain_apm/hooks/deploy.rb