require "rorvswild/version" require "rorvswild/locator" require "rorvswild/section" require "rorvswild/client" require "rorvswild/plugins" require "rorvswild/queue" require "rorvswild/agent" module RorVsWild def self.start(config) @logger = initialize_logger(config[:logger]) @agent = Agent.new(config) rescue Exception => ex logger.error(ex) raise end def self.agent @agent end def self.logger @logger ||= initialize_logger end def self.measure_code(code) agent ? agent.measure_code(code) : eval(code) end def self.measure_block(name, &block) agent ? agent.measure_block(name , &block) : block.call end def self.catch_error(extra_details = nil, &block) agent ? agent.catch_error(extra_details, &block) : block.call end def self.record_error(exception, extra_details = nil) agent.record_error(exception, extra_details) if agent end def self.initialize_logger(destination = nil) if destination.is_a?(Logger) destination elsif destination Logger.new(destination) elsif defined?(Rails) Rails.logger else Logger.new(STDOUT) end end def self.clock_milliseconds Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) end end if defined?(Rails) require "rorvswild/rails_loader" RorVsWild::RailsLoader.start_on_rails_initialization end