lib/oboe-heroku/base.rb in oboe-heroku-0.9.15.6 vs lib/oboe-heroku/base.rb in oboe-heroku-0.9.16.1
- old
+ new
@@ -20,20 +20,25 @@
SAMPLE_SOURCE_MASK = 0b1111000000000000000000000000
ZERO_SAMPLE_RATE_MASK = 0b1111000000000000000000000000
ZERO_SAMPLE_SOURCE_MASK = 0b0000111111111111111111111111
+##
+# This module is the base module for the various implementations of Oboe reporting.
+# Current variations as of 2014-09-10 are a c-extension, JRuby (using TraceView Java
+# instrumentation) and a Heroku c-extension (with embedded tracelyzer)
module OboeBase
extend ::Oboe::ThreadLocal
attr_accessor :reporter
+ attr_accessor :collector
attr_accessor :loaded
- attr_accessor :sample_source
- attr_accessor :sample_rate
- thread_local :layer_op
+ thread_local :sample_source
+ thread_local :sample_rate
+ thread_local :layer_op
- def self.included(cls)
+ def self.included(_)
self.loaded = true
end
def tracing_layer_op?(operation)
if operation.is_a?(Array)
@@ -41,66 +46,95 @@
else
return Oboe.layer_op == operation
end
end
+ ##
+ # Returns true if the tracing_mode is set to always.
+ # False otherwise
+ #
def always?
- Oboe::Config[:tracing_mode].to_s == "always"
+ Oboe::Config[:tracing_mode].to_s == 'always'
end
+ ##
+ # Returns true if the tracing_mode is set to never.
+ # False otherwise
+ #
def never?
- Oboe::Config[:tracing_mode].to_s == "never"
+ Oboe::Config[:tracing_mode].to_s == 'never'
end
+ ##
+ # Returns true if the tracing_mode is set to always or through.
+ # False otherwise
+ #
def passthrough?
- ["always", "through"].include?(Oboe::Config[:tracing_mode])
+ %w(always through).include?(Oboe::Config[:tracing_mode])
end
+ ##
+ # Returns true if the tracing_mode is set to through.
+ # False otherwise
+ #
def through?
- Oboe::Config[:tracing_mode] == "through"
+ Oboe::Config[:tracing_mode] == 'through'
end
+ ##
+ # Returns true if we are currently tracing a request
+ # False otherwise
+ #
def tracing?
return false unless Oboe.loaded
- Oboe::Context.isValid and not Oboe.never?
+ Oboe::Context.isValid && !Oboe.never?
end
def log(layer, label, options = {})
# WARN: Oboe.log will be deprecated in a future release. Please use Oboe::API.log instead.
Oboe::API.log(layer, label, options)
end
def heroku?
- true
+ ENV['TRACEVIEW_URL']
end
+ ##
+ # Determines if we are running under a forking webserver
+ #
def forking_webserver?
- (defined?(::Unicorn) and ($0 =~ /unicorn/i)) ? true : false
+ (defined?(::Unicorn) && ($PROGRAM_NAME =~ /unicorn/i)) ? true : false
end
##
+ # Indicates whether a supported framework is in use
+ # or not
+ #
+ def framework?
+ defined?(::Rails) or defined?(::Sinatra) or defined?(::Padrino) or defined?(::Grape)
+ end
+
+ ##
# These methods should be implemented by the descendants
# (Oboe_metal, Oboe_metal (JRuby), Heroku_metal)
#
- def sample?(opts = {})
- raise "sample? should be implemented by metal layer."
+ def sample?(_opts = {})
+ fail 'sample? should be implemented by metal layer.'
end
- def log(layer, label, options = {})
- raise "log should be implemented by metal layer."
+ def log(_layer, _label, _options = {})
+ fail 'log should be implemented by metal layer.'
end
- def set_tracing_mode(mode)
- raise "set_tracing_mode should be implemented by metal layer."
+ def set_tracing_mode(_mode)
+ fail 'set_tracing_mode should be implemented by metal layer.'
end
- def set_sample_rate(rate)
- raise "set_sample_rate should be implemented by metal layer."
+ def set_sample_rate(_rate)
+ fail 'set_sample_rate should be implemented by metal layer.'
end
-
end
module Oboe
extend OboeBase
end
-