class AppsignalReport::DeployReport

Deploy Report

Compare metrics of one hour before and after the last deploy:

Public Instance Methods

generate() click to toggle source
# File lib/appsignal_report/deploy_report.rb, line 11
def generate
  @report = {
    title: title,
    last_deploy_time: Time.parse(last_deploy[:created_at]).utc,
  }
  process_metrics
end

Private Instance Methods

info_message() click to toggle source

@return [String]

# File lib/appsignal_report/deploy_report.rb, line 22
def info_message
  "The deploy finished at #{report[:last_deploy_time]}"
end
last_deploy() click to toggle source

@return [Hash]

# File lib/appsignal_report/deploy_report.rb, line 51
def last_deploy
  @last_deploy = perform_api_request(last_deploy_marker_uri)[:markers].first
end
last_deploy_marker_uri() click to toggle source

@return [URI]

# File lib/appsignal_report/deploy_report.rb, line 56
def last_deploy_marker_uri
  query = URI.encode_www_form(
    token: api_token,
    kind: :deploy,
    limit: 1
  )
  URI("#{base_uri}/markers.json?#{query}")
end
metrics_uri() click to toggle source

@return [URI]

# File lib/appsignal_report/deploy_report.rb, line 38
def metrics_uri
  one_hour = 3600 # seconds
  query = URI.encode_www_form(
    token: api_token,
    kind: :web,
    from: (report[:last_deploy_time] - one_hour).iso8601,
    to: (report[:last_deploy_time] + one_hour).iso8601,
    'fields[]': %i(mean count ex_rate)
  )
  URI("#{base_uri}/graphs.json?#{query}")
end
report_split_time() click to toggle source

@return [Time|nil]

# File lib/appsignal_report/deploy_report.rb, line 27
def report_split_time
  report[:last_deploy_time]
end
timestamp_in_grace_period?(timestamp) click to toggle source

@return [Boolean]

# File lib/appsignal_report/deploy_report.rb, line 32
def timestamp_in_grace_period?(timestamp)
  grace_period = 10 * 60
  (timestamp - report[:last_deploy_time].to_time.to_i).abs < grace_period
end