51 lines
947 B
Ruby
51 lines
947 B
Ruby
module ConditionalSkylight
|
|
module DummyMixin
|
|
def self.included(object)
|
|
object.extend(self)
|
|
super
|
|
end
|
|
|
|
def instrument_method(*)
|
|
end
|
|
end
|
|
|
|
extend self
|
|
|
|
def enabled?
|
|
authenticated? and lucky_dyno?
|
|
end
|
|
|
|
def authenticated?
|
|
ENV['SKYLIGHT_AUTHENTICATION'.freeze]
|
|
end
|
|
|
|
def lucky_dyno?
|
|
@lucky_dyno = detect_lucy_dyno unless instance_variable_defined? :@lucky_dyno
|
|
@lucky_dyno
|
|
end
|
|
|
|
def detect_lucy_dyno
|
|
unless ENV['DYNO'.freeze]
|
|
warn "[ConditionalSkylight] $DYNO not set, skipping lucky dyno check"
|
|
return true
|
|
end
|
|
|
|
dyno = Integer ENV['DYNO'.freeze][/\d+/]
|
|
|
|
if dyno % 5 == 1
|
|
warn "[ConditionalSkylight] lucky dyno, enabling Skylight"
|
|
true
|
|
else
|
|
warn "[ConditionalSkylight] not a lucky dyno, disabling Skylight"
|
|
false
|
|
end
|
|
end
|
|
|
|
if enabled?
|
|
require 'skylight'
|
|
Mixin = Skylight::Helpers
|
|
else
|
|
Mixin = DummyMixin
|
|
end
|
|
end
|