Sha256: 3f63c067c04182c1d527cf79003d766f3cd6b439e8ff8b51f5fc5fcffcced24e

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

require "octave/version"
require "octave/configuration"
require "octave/dispatcher/base"
require "octave/dispatcher/logger"
require "octave/payload"
require "octave/agent"

if defined?(Rails)
  require "octave/helpers/controller"
  require "octave/railtie"
end

module Octave #:nodoc:
  class << self
    attr_writer :config

    # Configures Octave. See <tt>Octave::Configuration</tt> for configuration
    # options.
    #
    # == Example
    #   Octave.configure do |config|
    #     config.logger = Rails.logger
    #   end
    def configure
      self.config ||= Configuration.new
      yield(config)
    end

    # @return [Configuration] The current Octave configuration
    def config
      @config ||= Configuration.new
    end

    # Resets the configuration to the default
    def reset_config
      @config = nil
    end

    # Shortcut method to access <tt>Octave.config.logger</tt>.
    def logger
      Octave.config.logger
    end

    # Measure the performance of a block.
    #
    # == Example
    #   Octave.measure("process-card") do
    #     process_credit_card
    #   end
    def measure(name, options = {})
      payload = Payload.new(name, options)
      result  = yield

      dispatch(payload.tap(&:done))
      result
    end

    # Dispatches the payload to the current agent
    def dispatch(payload)
      agent.dispatch(payload) if agent.running?
    end

    # Starts the agent
    def start
      agent.start
    end

    # Stops the agent
    def stop
      agent.stop
      @agent = nil
    end

    private

    def agent
      @agent ||= Agent.new
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
octave-0.1.1 lib/octave.rb
octave-0.1.0 lib/octave.rb