Sha256: 2457d7a8de746f8641947d4905fdea93a59077cd3cac505a2e808d7239081bf9

Contents?: true

Size: 1.82 KB

Versions: 36

Compression:

Stored size: 1.82 KB

Contents

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.io/terms.html

require 'sqreen/frameworks/generic'
require 'sqreen/middleware'

module Sqreen
  module Frameworks
    # Handle Sinatra specific functions
    class SinatraFramework < GenericFramework
      def framework_infos
        h = super
        h[:framework_type] = 'Sinatra'
        h[:framework_version] = Sinatra::VERSION
        h
      end

      def on_start(&block)
        worker_fork_detection
        sentry_ignore_exceptions
        newrelic_ignore_errors
        hook_app_build(Sinatra::Base)
        hook_rack_request(Sinatra::Application, &block)
        yield self
      end

      def db_settings(options = {})
        adapter = options[:connection_adapter]
        return nil unless adapter

        begin
          adapter_name = adapter.class.const_get 'ADAPTER_NAME'
        rescue
          # FIXME: we may want to log that
          Sqreen.log.warn 'cannot find ADAPTER_NAME'
          return nil
        end
        db_type = DB_MAPPING[adapter_name]
        db_infos = { :name => adapter_name }
        [db_type, db_infos]
      end

      def hook_app_build(klass)
        klass.singleton_class.class_eval do
          define_method(:setup_default_middleware_with_sqreen) do |builder|
            ret = setup_default_middleware_without_sqreen(builder)
            builder.instance_variable_get('@use').insert(2, proc do |app|
              # Inject error middle just before sinatra one
              Sqreen::ErrorHandlingMiddleware.new(app)
            end)
            ret
          end

          alias_method :setup_default_middleware_without_sqreen, :setup_default_middleware
          alias_method :setup_default_middleware, :setup_default_middleware_with_sqreen
        end
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
sqreen-1.17.0-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.17.0 lib/sqreen/frameworks/sinatra.rb
sqreen-1.16.2-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.16.2 lib/sqreen/frameworks/sinatra.rb
sqreen-1.16.1-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.16.1 lib/sqreen/frameworks/sinatra.rb
sqreen-1.16.0-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.16.0 lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.8-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.8 lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.8.beta2-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.8.beta2 lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.8.beta1-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.8.beta1 lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.7-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.7 lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.7.beta1-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.7.beta1 lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.6-java lib/sqreen/frameworks/sinatra.rb
sqreen-1.15.6 lib/sqreen/frameworks/sinatra.rb