class ScoutApm::GitRevision

Attributes

context[R]
sha[RW]

Public Class Methods

new(context) click to toggle source
# File lib/scout_apm/git_revision.rb, line 7
def initialize(context)
  @context = context
  @sha = detect
  logger.debug "Detected Git Revision [#{@sha}]"
end

Public Instance Methods

logger() click to toggle source
# File lib/scout_apm/git_revision.rb, line 13
def logger
  context.logger
end

Private Instance Methods

app_root() click to toggle source
# File lib/scout_apm/git_revision.rb, line 64
def app_root
  context.environment.root
end
detect() click to toggle source
# File lib/scout_apm/git_revision.rb, line 19
def detect
  detect_from_config     ||
  detect_from_heroku     ||
  detect_from_capistrano ||
  detect_from_mina ||
  detect_from_git
end
detect_from_capistrano() click to toggle source
# File lib/scout_apm/git_revision.rb, line 38
def detect_from_capistrano
  version = File.read(File.join(app_root, 'REVISION')).strip
  # Capistrano 3.0 - 3.1.x
  version || File.open(File.join(app_root, '..', 'revisions.log')).to_a.last.strip.sub(/.*as release ([0-9]+).*/, '\1')
rescue
  logger.debug "Unable to detect Git Revision from Capistrano: #{$!.message}"
  nil
end
detect_from_config() click to toggle source

Config will locate the value from:

ENV variable - SCOUT_REVISION_SHA
YAML setting - revision_sha
# File lib/scout_apm/git_revision.rb, line 34
def detect_from_config
  context.config.value('revision_sha')
end
detect_from_git() click to toggle source
# File lib/scout_apm/git_revision.rb, line 55
def detect_from_git
  if File.directory?(".git")
    `git rev-parse --short HEAD`.strip 
  end
rescue
  logger.debug "Unable to detect Git Revision from Git: #{$!.message}"
  nil
end
detect_from_heroku() click to toggle source
# File lib/scout_apm/git_revision.rb, line 27
def detect_from_heroku
  ENV['HEROKU_SLUG_COMMIT']
end
detect_from_mina() click to toggle source

github.com/mina-deploy/mina

# File lib/scout_apm/git_revision.rb, line 48
def detect_from_mina 
  File.read(File.join(app_root, '.mina_git_revision')).strip
rescue
  logger.debug "Unable to detect Git Revision from Mina: #{$!.message}"
  nil
end