travis-api/lib/travis/api/app/skylight/service_probe.rb
2014-04-09 16:53:24 -05:00

52 lines
1.1 KiB
Ruby

require 'skylight'
require 'travis/api/app'
class Travis::Api::App
module Skylight
class ServiceProbe
class ServiceProxy < Delegator
def initialize(key, service)
super(service)
@key = key
@service = service
end
def __getobj__
@service
end
def __setobj__(obj)
@service = obj
end
def run(*args)
opts = {
category: "api.service.#{@key}",
title: "Service #{@key}",
annotations: {
service: @key.to_s
}
}
::Skylight.instrument(opts) do
@service.run(*args)
end
end
end
def install
Travis::Services::Helpers.class_eval do
alias service_without_sk service
def service(key, *args)
s = service_without_sk(key, *args)
ServiceProxy.new(key, s)
end
end
end
end
::Skylight::Probes.register("Travis::Services::Helpers", "travis/services/helpers", ServiceProbe.new)
end
end