Sha256: 4490739c292d84ef0a40ebae6c6f744e2fa83c6f7938e5e4ced512496855765b

Contents?: true

Size: 1.72 KB

Versions: 75

Compression:

Stored size: 1.72 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)
        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

75 entries across 75 versions & 2 rubygems

Version Path
sqreen-1.13.1-java lib/sqreen/frameworks/sinatra.rb
sqreen-alt-1.13.1 lib/sqreen/frameworks/sinatra.rb
sqreen-1.13.1 lib/sqreen/frameworks/sinatra.rb
sqreen-1.13.0-java lib/sqreen/frameworks/sinatra.rb
sqreen-alt-1.13.0 lib/sqreen/frameworks/sinatra.rb
sqreen-1.13.0 lib/sqreen/frameworks/sinatra.rb
sqreen-1.12.0-java lib/sqreen/frameworks/sinatra.rb
sqreen-alt-1.12.0 lib/sqreen/frameworks/sinatra.rb
sqreen-1.12.0 lib/sqreen/frameworks/sinatra.rb
sqreen-1.11.3-java lib/sqreen/frameworks/sinatra.rb
sqreen-alt-1.11.3 lib/sqreen/frameworks/sinatra.rb
sqreen-1.11.3 lib/sqreen/frameworks/sinatra.rb
sqreen-1.11.2-java lib/sqreen/frameworks/sinatra.rb
sqreen-alt-1.11.2 lib/sqreen/frameworks/sinatra.rb
sqreen-1.11.2 lib/sqreen/frameworks/sinatra.rb
sqreen-1.11.1-java lib/sqreen/frameworks/sinatra.rb
sqreen-alt-1.11.1 lib/sqreen/frameworks/sinatra.rb
sqreen-1.11.1 lib/sqreen/frameworks/sinatra.rb
sqreen-1.11.0-java lib/sqreen/frameworks/sinatra.rb
sqreen-alt-1.11.0 lib/sqreen/frameworks/sinatra.rb