class AlacrityRails::Diagnostic

Public Class Methods

run() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 3
def self.run; new.run end

Public Instance Methods

api_token_present() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 32
def api_token_present
  [
    Config.api_token.present?,
    %<
      The API token could not be found in the server environment.

      You can find it on https://alacrityapp.com then set it in your server config as `ALACRITY_API_TOKEN`.
    >
  ]
end
logger() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 5
def logger; @logger ||= Logger.new(STDOUT) end
middleware_appears_first() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 66
    def middleware_appears_first
      [
        Rails.application.config.middleware.first == (AlacrityRails::Middleware),
        %<
          The AlacrityRails::Middleware is not first in your middleware stack.
          Anything appearing above it will not be included in metrics tracking.

#{Rails.application.config.middleware.map(&:inspect).to_yaml}
        >
      ]
    end
middleware_present() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 56
def middleware_present
  [
    Rails.application.config.middleware.include?(AlacrityRails::Middleware),
    %<
      The AlacrityRails::Middleware is absent from your middleware stack.
      Make sure your application is not overriding the middleware stack in an initializer.
    >
  ]
end
run() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 7
def run
  run_check :api_token_present
  run_check :valid_api_token
  run_check :middleware_present
  run_check :middleware_appears_first

  puts success_message
  puts assistance_message
end
run_check(check_name) click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 17
def run_check(check_name)
  logger << "CHECK: #{check_name.to_s.humanize}..."

  successful, display_message = public_send(check_name)

  if successful
    logger << "PASSED\n"
  else
    logger << "FAILED\n"
    logger << display_message
    logger << assistance_message
    exit
  end
end
valid_api_token() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 43
def valid_api_token
  response = Client.transmit(Transaction::Diagnostic.new)

  [
    response.value.code == '200',
    %<
      Oh no! Its seems like we have a problem!

      #{JSON.parse(response.value.body)['message']}
    >
  ]
end

Private Instance Methods

assistance_message() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 88
def assistance_message
  "\nIf you need assistance or have any questions, send an email to support@alacrityapp.com or tweet @alacrityapp and we'll help you out!\n"
end
success_message() click to toggle source
# File lib/alacrity-rails/diagnostic.rb, line 80
def success_message
  %<
    Everything looks good!

    You should see data on https://alacrityapp.com shortly after your app receives traffic.
  >
end