Sha256: 7055244a7bceaf3ea328f73f1db7d3d170ae20587e000bd78c3092e0bc791f65

Contents?: true

Size: 1.14 KB

Versions: 12

Compression:

Stored size: 1.14 KB

Contents

require 'active_support/configurable'

module Gris
  class Application
    include ActiveSupport::Configurable
    config_accessor :use_health_middleware

    def initialize
      Gris::Deprecations.initialization_checks
      @filenames = ['', '.html', 'index.html', '/index.html']
      @rack_static = ::Rack::Static.new(
        -> { [404, {}, []] },
        root: File.expand_path('../public', __FILE__),
        urls: ['/']
        )
    end

    def self.instance(config = {})
      @instance ||= Rack::Builder.new do
        use Gris::Middleware::Health unless config[:use_health_middleware] == false
        use Rack::Cors do
          allow do
            origins '*'
            resource '*', headers: :any, methods: :get
          end
        end
        run Gris::Application.new
      end.to_app
    end

    def call(env)
      response = ApplicationEndpoint.call(env)
      # Render error pages or return API response
      case response[0]
      when 404, 500
        content = @rack_static.call(env.merge('PATH_INFO' => "/errors/#{response[0]}.html"))
        [response[0], content[1], content[2]]
      else
        response
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
gris-0.4.0 lib/gris/application.rb
gris-0.3.9 lib/gris/application.rb
gris-0.3.8 lib/gris/application.rb
gris-0.3.7 lib/gris/application.rb
gris-0.3.6 lib/gris/application.rb
gris-0.3.4 lib/gris/application.rb
gris-0.3.3 lib/gris/application.rb
gris-0.3.2 lib/gris/application.rb
gris-0.3.1 lib/gris/application.rb
gris-0.3.0 lib/gris/application.rb
gris-0.2.4 lib/gris/application.rb
gris-0.2.3 lib/gris/application.rb