52 lines
1.1 KiB
Ruby
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
|