Sha256: 06548b4e147305688aad229394f9834ddbbfc51b73886d2c319f34dec3541ef5
Contents?: true
Size: 1.37 KB
Versions: 1
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true module GraphQL class Schema # In early GraphQL versions, errors would be "automatically" # rescued and replaced with `"Internal error"`. That behavior # was undesirable but this middleware is offered for people who # want to preserve it. # # It has a couple of differences from the previous behavior: # # - Other parts of the query _will_ be run (previously, # execution would stop when the error was raised and the result # would have no `"data"` key at all) # - The entry in {Query::Context#errors} is a {GraphQL::ExecutionError}, _not_ # the originally-raised error. # - The entry in the `"errors"` key includes the location of the field # which raised the errors. # # @example Use CatchallMiddleware with your schema # # All errors will be suppressed and replaced with "Internal error" messages # MySchema.middleware << GraphQL::Schema::CatchallMiddleware # module CatchallMiddleware MESSAGE = "Internal error" # Rescue any error and replace it with a {GraphQL::ExecutionError} # whose message is {MESSAGE} def self.call(parent_type, parent_object, field_definition, field_args, query_context, next_middleware) next_middleware.call rescue StandardError => err GraphQL::ExecutionError.new(MESSAGE) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
graphql-1.3.0 | lib/graphql/schema/catchall_middleware.rb |