Sha256: b3a126b2f2812250423de61fa4a8c7a285372d155e91577badb66ec3bcbdc7c6

Contents?: true

Size: 1.58 KB

Versions: 11

Compression:

Stored size: 1.58 KB

Contents

require 'skylight'
require 'rails'

module Skylight
  class Railtie < Rails::Railtie
    config.skylight = ActiveSupport::OrderedOptions.new

    # The environments in which skylight should be inabled
    config.skylight.environments = ['production']

    # The path to the configuration file
    config.skylight.config_path = "config/skylight.yml"

    initializer 'skylight.configure' do |app|
      if activate?
        if config = load_skylight_config(app)
          @instrumenter = Instrumenter.start!(config)

          app.middleware.insert 0, Middleware, @instrumenter

          Rails.logger.info "[SKYLIGHT] Skylight agent enabled"
        end
      end
    end

  private

    def load_skylight_config(app)
      path = config_path(app)
      path = nil unless File.exist?(path)

      unless tmp = app.config.paths['tmp'].first
        Rails.logger.warn "[SKYLIGHT] tmp directory missing from rails configuration"
        return nil
      end

      config = Config.load(path, Rails.env.to_s, ENV)
      config.logger = Rails.logger
      config['agent.sockfile_path'] = tmp
      config['normalizers.render.view_paths'] = app.config.paths["app/views"].existent
      config.validate!
      config

    rescue ConfigError => e
      Rails.logger.warn "[SKYLIGHT] #{e.message}; disabling Skylight agent"
      nil
    end

    def config_path(app)
      File.expand_path(config.skylight.config_path, app.root)
    end

    def environments
      Array(config.skylight.environments).map { |e| e && e.to_s }.compact
    end

    def activate?
      environments.include?(Rails.env.to_s)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
skylight-0.1.5.alpha2 lib/skylight/railtie.rb
skylight-0.1.5.alpha1 lib/skylight/railtie.rb
skylight-0.1.4 lib/skylight/railtie.rb
skylight-0.1.4.alpha3 lib/skylight/railtie.rb
skylight-0.1.4.alpha2 lib/skylight/railtie.rb
skylight-0.1.4.alpha1 lib/skylight/railtie.rb
skylight-0.1.3 lib/skylight/railtie.rb
skylight-0.1.2 lib/skylight/railtie.rb
skylight-0.1.1 lib/skylight/railtie.rb
skylight-0.1.0 lib/skylight/railtie.rb
skylight-0.1.0.alpha2 lib/skylight/railtie.rb