Sha256: 8fcff391d66501e954a27b6d6fd2b0dee8acbc87f8e8e88bdb18829bf8240122

Contents?: true

Size: 1.61 KB

Versions: 4

Compression:

Stored size: 1.61 KB

Contents

require 'yaml'

module Skylight
  class Config

    def self.load_from_yaml(path)
      new do |config|
        data = YAML.load_file(path)
        data.each do |key, value|
          if config.respond_to?("#{key}=")
            config.send("#{key}=", value)
          end
        end
      end
    end

    def initialize(attrs = {})
      @ssl      = true
      @deflate  = true
      @host     = "agent.skylight.io"
      @port     = 443
      @interval = 5
      @protocol = JsonProto.new(self)
      @max_pending_traces = 500
      @samples_per_interval = 100

      @logger = Logger.new(STDOUT)
      @logger.level = Logger::INFO

      attrs.each do |k, v|
        if respond_to?("#{k}=")
          send("#{k}=", v)
        end
      end

      yield self if block_given?
    end

    attr_accessor :authentication_token

    attr_accessor :ssl
    alias_method :ssl?, :ssl

    attr_accessor :deflate
    alias_method :deflate?, :deflate

    attr_accessor :host

    attr_accessor :port

    attr_accessor :samples_per_interval

    attr_accessor :interval

    attr_accessor :max_pending_traces

    attr_reader :protocol
    def protocol=(val)
      if val.is_a?(String) || val.is_a?(Symbol)
        class_name = val.to_s.capitalize+"Proto"
        val = Skylight.const_get(class_name).new(self)
      end
      @protocol = val
    end

    attr_accessor :logger

    def log_level
      logger && logger.level
    end

    def log_level=(level)
      if logger
        if level.is_a?(String) || level.is_a?(Symbol)
          level = Logger.const_get(level.to_s.upcase)
        end
        logger.level = level
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
skylight-0.0.7 lib/skylight/config.rb
skylight-0.0.6 lib/skylight/config.rb
skylight-0.0.5 lib/skylight/config.rb
skylight-0.0.2 lib/skylight/config.rb