xyeger 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +64 -4
- data/lib/xyeger/config.rb +23 -0
- data/lib/xyeger/formatters/base.rb +62 -0
- data/lib/xyeger/formatters/json.rb +4 -31
- data/lib/xyeger/formatters/key_value.rb +11 -0
- data/lib/xyeger/formatters/values.rb +11 -0
- data/lib/xyeger/formatters.rb +2 -0
- data/lib/xyeger/logger.rb +0 -5
- data/lib/xyeger/version.rb +1 -1
- data/lib/xyeger.rb +23 -5
- data/xyeger.gemspec +3 -1
- metadata +21 -4
- data/lib/xyeger/railtie.rb +0 -15
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e6fd8d7c1c20bb9ad7c4dc82ef8520dee72ba414
         | 
| 4 | 
            +
              data.tar.gz: b332c76dca53975e4aac6a237ef0b3c07fcc3b5a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 02c6f7aa84b8a72ea2f2dc9fcc140cc86c3f053e1ef803ca8f8a9c0d293184a35b4e7565d595080b8a17c0652cbf3c49e5d01b1e5be91f9cb7b9fa2eca853682
         | 
| 7 | 
            +
              data.tar.gz: f6a41e97e0a35025f52913ab8e13dfa0bc248f591222795bc4b8d4cecf9ddf82f79486c8411a3ce93430d207b6f06057d4a4d64255c2cff7243ebc28c9f35a53
         | 
    
        data/README.md
    CHANGED
    
    | @@ -25,13 +25,37 @@ Add environments: | |
| 25 25 | 
             
            XYEGER_HOSTNAME='LoggerApplication' #f.e.: rails, sidekiq, sneakers
         | 
| 26 26 | 
             
            ```
         | 
| 27 27 |  | 
| 28 | 
            -
            Add into  | 
| 28 | 
            +
            Add into initializer file:
         | 
| 29 29 | 
             
            ```ruby
         | 
| 30 | 
            -
            #config/ | 
| 31 | 
            -
             | 
| 32 | 
            -
              config. | 
| 30 | 
            +
            #config/initializers/xyeger.rb
         | 
| 31 | 
            +
            Xyeger.configure do |config|
         | 
| 32 | 
            +
              config.filter_parameters = Rails.application.config.filter_parameters
         | 
| 33 33 | 
             
            end
         | 
| 34 34 | 
             
            ```
         | 
| 35 | 
            +
            |          Formatter           |   Description    | Options |
         | 
| 36 | 
            +
            | ---------------------------- | ---------------- | ------- |
         | 
| 37 | 
            +
            | `Xyeger::Formatters::Base`   |                  | colored |
         | 
| 38 | 
            +
            | `Xyeger::Formatters::Json`   | default format   | colored |
         | 
| 39 | 
            +
            | `Xyeger::Formatters::Values` | show only values | colored |
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            Default options:
         | 
| 42 | 
            +
            ```ruby
         | 
| 43 | 
            +
            #config/initializers/xyeger.rb
         | 
| 44 | 
            +
            Xyeger.configure do |config|
         | 
| 45 | 
            +
              config.output = STDOUT
         | 
| 46 | 
            +
              config.formatter = Xyeger::Formatters::Values.new
         | 
| 47 | 
            +
              config.filter_parameters = Rails.application.config.filter_parameters
         | 
| 48 | 
            +
              config.hostname = ENV['XYEGER_HOSTNAME']
         | 
| 49 | 
            +
              config.pid = $$
         | 
| 50 | 
            +
              config.app = Rails.application.class.parent_name
         | 
| 51 | 
            +
              config.env = Rails.env
         | 
| 52 | 
            +
            end
         | 
| 53 | 
            +
            ```
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            For colored output use option `colored` (gem [Paint](https://github.com/janlelis/paint))
         | 
| 56 | 
            +
            ```ruby
         | 
| 57 | 
            +
            config.xyeger.formatter = Xyeger::Formatters::Values.new(colored: true)
         | 
| 58 | 
            +
            ```
         | 
| 35 59 |  | 
| 36 60 | 
             
            ## Output results
         | 
| 37 61 |  | 
| @@ -104,6 +128,42 @@ Rails.logger.info('Logger message', { content: '1', params: 'b' }) | |
| 104 128 | 
             
            }
         | 
| 105 129 |  | 
| 106 130 | 
             
            ```
         | 
| 131 | 
            +
             | 
| 132 | 
            +
            ## Grape usage
         | 
| 133 | 
            +
            WIth ```gem 'grape_logging'```
         | 
| 134 | 
            +
            ```ruby
         | 
| 135 | 
            +
            class Root < Grape::API
         | 
| 136 | 
            +
              # Message: {
         | 
| 137 | 
            +
              #  "status":200,
         | 
| 138 | 
            +
              #  "time":
         | 
| 139 | 
            +
              #  {
         | 
| 140 | 
            +
              #    "total":86.84,
         | 
| 141 | 
            +
              #    "db":15.27,
         | 
| 142 | 
            +
              #    "view":71.57
         | 
| 143 | 
            +
              #  },
         | 
| 144 | 
            +
              #  "method":"GET",
         | 
| 145 | 
            +
              #  "path":"/api/v2/tickers",
         | 
| 146 | 
            +
              #  "params":{"password":"[FILTERED]","a":"b"},
         | 
| 147 | 
            +
              #  "ip":"127.0.0.1",
         | 
| 148 | 
            +
              #  "ua":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"
         | 
| 149 | 
            +
              #}
         | 
| 150 | 
            +
              formatter = Xyeger::Formatters::Json.new(
         | 
| 151 | 
            +
                message: ->(message, _context) { "#{message[:method]} #{message[:path]}" },
         | 
| 152 | 
            +
                context: ->(message, _context) { message }
         | 
| 153 | 
            +
              )
         | 
| 154 | 
            +
             | 
| 155 | 
            +
              use GrapeLogging::Middleware::RequestLogger,
         | 
| 156 | 
            +
                logger: logger,
         | 
| 157 | 
            +
                formatter: formatter,
         | 
| 158 | 
            +
                include: [
         | 
| 159 | 
            +
                  GrapeLogging::Loggers::Response.new,
         | 
| 160 | 
            +
                  GrapeLogging::Loggers::FilterParameters.new,
         | 
| 161 | 
            +
                  GrapeLogging::Loggers::ClientEnv.new
         | 
| 162 | 
            +
                ]
         | 
| 163 | 
            +
            end
         | 
| 164 | 
            +
            ```
         | 
| 165 | 
            +
             | 
| 166 | 
            +
             | 
| 107 167 | 
             
            ## License
         | 
| 108 168 |  | 
| 109 169 | 
             
            The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            module Xyeger
         | 
| 2 | 
            +
              class Config
         | 
| 3 | 
            +
                attr_accessor :output,
         | 
| 4 | 
            +
                              :formatter,
         | 
| 5 | 
            +
                              :filter_parameters,
         | 
| 6 | 
            +
                              :filter,
         | 
| 7 | 
            +
                              :hostname,
         | 
| 8 | 
            +
                              :pid,
         | 
| 9 | 
            +
                              :app,
         | 
| 10 | 
            +
                              :env
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def initialize
         | 
| 13 | 
            +
                  @output = STDOUT
         | 
| 14 | 
            +
                  @formatter = Xyeger::Formatters::Json.new
         | 
| 15 | 
            +
                  @filter_parameters = Rails.application.config.filter_parameters
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  @hostname = ENV['XYEGER_HOSTNAME']
         | 
| 18 | 
            +
                  @pid = $$
         | 
| 19 | 
            +
                  @app = Rails.application.class.parent_name
         | 
| 20 | 
            +
                  @env = Rails.env
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            module Xyeger
         | 
| 2 | 
            +
              module Formatters
         | 
| 3 | 
            +
                class Base
         | 
| 4 | 
            +
                  attr_reader :attributes, :colors
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  def initialize(attributes = {})
         | 
| 7 | 
            +
                    @attributes = attributes
         | 
| 8 | 
            +
                    @colors = Array.new(9) { Paint.random } if attributes[:colored]
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def call(severity, timestamp, context, message)
         | 
| 12 | 
            +
                    message, context = prepare(message, context)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    context = Xyeger.config.filter.filter(context) if Xyeger.config.filter
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    result = {
         | 
| 17 | 
            +
                      hostname: Xyeger.config.hostname,
         | 
| 18 | 
            +
                      pid: Xyeger.config.pid,
         | 
| 19 | 
            +
                      app: Xyeger.config.app,
         | 
| 20 | 
            +
                      env: Xyeger.config.env,
         | 
| 21 | 
            +
                      level: severity,
         | 
| 22 | 
            +
                      time: timestamp,
         | 
| 23 | 
            +
                      caller: caller_message(caller_locations),
         | 
| 24 | 
            +
                      message: message,
         | 
| 25 | 
            +
                      context: context
         | 
| 26 | 
            +
                    }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    colored(result) if attributes[:colored]
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    result
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  private def caller_message(callers)
         | 
| 34 | 
            +
                    if location = callers.find{|x| x.path.include?(Rails.root.to_s)}
         | 
| 35 | 
            +
                      "#{location.path}:#{location.lineno}"
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  private def prepare(message, context)
         | 
| 40 | 
            +
                    new_message = attributes[:message].call(message, context) if attributes[:message]
         | 
| 41 | 
            +
                    new_context = attributes[:context].call(message, context) if attributes[:context]
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    return [new_message, new_context] if attributes[:message] || attributes[:context]
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    case message
         | 
| 46 | 
            +
                    when LogrageRaw
         | 
| 47 | 
            +
                      ['Lograge', message.data]
         | 
| 48 | 
            +
                    when ::StandardError
         | 
| 49 | 
            +
                      ['StandardError', { class: message.class.name, error: message.to_s }]
         | 
| 50 | 
            +
                    else
         | 
| 51 | 
            +
                      [message.to_s, context]
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  private def colored(result)
         | 
| 56 | 
            +
                    result.each_with_index do |(key, value), index|
         | 
| 57 | 
            +
                      result[key] = Paint[value, colors[index]]
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| @@ -1,37 +1,10 @@ | |
| 1 1 | 
             
            module Xyeger
         | 
| 2 2 | 
             
              module Formatters
         | 
| 3 | 
            -
                class Json <  | 
| 4 | 
            -
                  def call( | 
| 5 | 
            -
                     | 
| 3 | 
            +
                class Json < Base
         | 
| 4 | 
            +
                  def call(*args)
         | 
| 5 | 
            +
                    result = super(*args)
         | 
| 6 6 |  | 
| 7 | 
            -
                     | 
| 8 | 
            -
                      logger: ENV.fetch('XYEGER_HOSTNAME', $0),
         | 
| 9 | 
            -
                      pid: $$,
         | 
| 10 | 
            -
                      app: Rails.application.class.parent_name,
         | 
| 11 | 
            -
                      env: Rails.env,
         | 
| 12 | 
            -
                      level: severity,
         | 
| 13 | 
            -
                      time: timestamp,
         | 
| 14 | 
            -
                      caller: caller_message(caller_locations),
         | 
| 15 | 
            -
                      message: message,
         | 
| 16 | 
            -
                      context: context
         | 
| 17 | 
            -
                    }.to_json + "\n"
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  def caller_message(callers)
         | 
| 21 | 
            -
                    if location = callers.find{|x| x.path.include?(Rails.root.to_s)}
         | 
| 22 | 
            -
                      "#{location.path}:#{location.lineno}"
         | 
| 23 | 
            -
                    end
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  def prepare(message, context)
         | 
| 27 | 
            -
                    case message
         | 
| 28 | 
            -
                    when LogrageRaw
         | 
| 29 | 
            -
                      ['Lograge', message.data]
         | 
| 30 | 
            -
                    when ::StandardError
         | 
| 31 | 
            -
                      ['StandardError', { class: message.class.name, error: message.to_s }]
         | 
| 32 | 
            -
                    else
         | 
| 33 | 
            -
                      [message.to_s, context]
         | 
| 34 | 
            -
                    end
         | 
| 7 | 
            +
                    result.compact.to_json + "\n"
         | 
| 35 8 | 
             
                  end
         | 
| 36 9 | 
             
                end
         | 
| 37 10 | 
             
              end
         | 
    
        data/lib/xyeger/formatters.rb
    CHANGED
    
    
    
        data/lib/xyeger/logger.rb
    CHANGED
    
    | @@ -1,10 +1,5 @@ | |
| 1 1 | 
             
            module Xyeger
         | 
| 2 2 | 
             
              class Logger < ActiveSupport::Logger
         | 
| 3 | 
            -
                def initialize(*args)
         | 
| 4 | 
            -
                  super
         | 
| 5 | 
            -
                  @formatter = Formatters::Json.new
         | 
| 6 | 
            -
                end
         | 
| 7 | 
            -
             | 
| 8 3 | 
             
                Logger::Severity.constants.each do |severity|
         | 
| 9 4 | 
             
                  define_method "#{severity.downcase}" do |message, context={}|
         | 
| 10 5 | 
             
                    add(Logger::Severity.const_get(severity), message, context)
         | 
    
        data/lib/xyeger/version.rb
    CHANGED
    
    
    
        data/lib/xyeger.rb
    CHANGED
    
    | @@ -1,21 +1,41 @@ | |
| 1 1 | 
             
            require 'active_support/logger'
         | 
| 2 2 | 
             
            require 'active_support/dependencies/autoload'
         | 
| 3 3 | 
             
            require 'active_support/ordered_options'
         | 
| 4 | 
            -
            require  | 
| 4 | 
            +
            require 'paint'
         | 
| 5 | 
            +
            require 'lograge'
         | 
| 6 | 
            +
            require 'xyeger/version'
         | 
| 5 7 |  | 
| 6 8 | 
             
            module Xyeger
         | 
| 7 9 | 
             
              module_function
         | 
| 8 10 |  | 
| 9 11 | 
             
              extend ActiveSupport::Autoload
         | 
| 10 12 |  | 
| 13 | 
            +
              autoload :Config
         | 
| 11 14 | 
             
              autoload :Logger
         | 
| 12 15 | 
             
              autoload :Formatters
         | 
| 13 16 |  | 
| 14 | 
            -
               | 
| 17 | 
            +
              class << self
         | 
| 18 | 
            +
                attr_reader :config
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def configure
         | 
| 21 | 
            +
                  @config ||= Xyeger::Config.new()
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  yield(@config)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  if @config.filter_parameters
         | 
| 26 | 
            +
                    @config.filter ||= ActionDispatch::Http::ParameterFilter.new(@config.filter_parameters)
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                  Xyeger.setup
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              def setup
         | 
| 33 | 
            +
                app = Rails.application
         | 
| 15 34 | 
             
                setup_lograge(app)
         | 
| 16 35 |  | 
| 17 | 
            -
                app.config.logger = Logger.new( | 
| 36 | 
            +
                app.config.logger = Logger.new(config.output)
         | 
| 18 37 | 
             
                Rails.logger = app.config.logger
         | 
| 38 | 
            +
                Rails.logger.formatter = config.formatter
         | 
| 19 39 | 
             
              end
         | 
| 20 40 |  | 
| 21 41 | 
             
              def setup_lograge(app)
         | 
| @@ -27,5 +47,3 @@ module Xyeger | |
| 27 47 | 
             
                Lograge.setup(app)
         | 
| 28 48 | 
             
              end
         | 
| 29 49 | 
             
            end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            require 'xyeger/railtie' if defined?(Rails)
         | 
    
        data/xyeger.gemspec
    CHANGED
    
    | @@ -12,7 +12,7 @@ Gem::Specification.new do |spec| | |
| 12 12 |  | 
| 13 13 | 
             
              spec.summary       = 'Uniq logger for project'
         | 
| 14 14 | 
             
              spec.description   = 'Uniq logger for project'
         | 
| 15 | 
            -
              spec.homepage      = ''
         | 
| 15 | 
            +
              spec.homepage      = 'https://github.com/vsevolod/xyeger'
         | 
| 16 16 | 
             
              spec.license       = 'MIT'
         | 
| 17 17 |  | 
| 18 18 | 
             
              # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
         | 
| @@ -32,6 +32,8 @@ Gem::Specification.new do |spec| | |
| 32 32 | 
             
              spec.require_paths = ["lib"]
         | 
| 33 33 |  | 
| 34 34 | 
             
              spec.add_dependency 'lograge', '>= 0.4'
         | 
| 35 | 
            +
              spec.add_dependency 'paint', '~> 2.0'
         | 
| 36 | 
            +
             | 
| 35 37 | 
             
              spec.add_runtime_dependency 'activesupport', '>= 4'
         | 
| 36 38 | 
             
              spec.add_runtime_dependency 'actionpack', '>= 4'
         | 
| 37 39 | 
             
              spec.add_runtime_dependency 'railties', '>= 4'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: xyeger
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Avramov Vsevolod
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-07-03 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: lograge
         | 
| @@ -24,6 +24,20 @@ dependencies: | |
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0.4'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: paint
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - "~>"
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '2.0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - "~>"
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '2.0'
         | 
| 27 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 42 | 
             
              name: activesupport
         | 
| 29 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -124,14 +138,17 @@ files: | |
| 124 138 | 
             
            - bin/console
         | 
| 125 139 | 
             
            - bin/setup
         | 
| 126 140 | 
             
            - lib/xyeger.rb
         | 
| 141 | 
            +
            - lib/xyeger/config.rb
         | 
| 127 142 | 
             
            - lib/xyeger/formatters.rb
         | 
| 143 | 
            +
            - lib/xyeger/formatters/base.rb
         | 
| 128 144 | 
             
            - lib/xyeger/formatters/json.rb
         | 
| 145 | 
            +
            - lib/xyeger/formatters/key_value.rb
         | 
| 129 146 | 
             
            - lib/xyeger/formatters/lograge_raw.rb
         | 
| 147 | 
            +
            - lib/xyeger/formatters/values.rb
         | 
| 130 148 | 
             
            - lib/xyeger/logger.rb
         | 
| 131 | 
            -
            - lib/xyeger/railtie.rb
         | 
| 132 149 | 
             
            - lib/xyeger/version.rb
         | 
| 133 150 | 
             
            - xyeger.gemspec
         | 
| 134 | 
            -
            homepage:  | 
| 151 | 
            +
            homepage: https://github.com/vsevolod/xyeger
         | 
| 135 152 | 
             
            licenses:
         | 
| 136 153 | 
             
            - MIT
         | 
| 137 154 | 
             
            metadata:
         | 
    
        data/lib/xyeger/railtie.rb
    DELETED
    
    | @@ -1,15 +0,0 @@ | |
| 1 | 
            -
            require 'rails/railtie'
         | 
| 2 | 
            -
            require 'action_view/log_subscriber'
         | 
| 3 | 
            -
            require 'action_controller/log_subscriber'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Xyeger
         | 
| 6 | 
            -
              class Raitie < Rails::Railtie
         | 
| 7 | 
            -
                config.xyeger = ActiveSupport::OrderedOptions.new
         | 
| 8 | 
            -
                config.xyeger.enabled = false
         | 
| 9 | 
            -
                config.xyeger.output = STDOUT
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                config.after_initialize do |app|
         | 
| 12 | 
            -
                  Xyeger.setup(app) if app.config.xyeger.enabled
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
            end
         |