Sha256: d932c47994f7b8bbff5966cd3ad46d4a266a0346faf1885bab541ca2eb3ecb96

Contents?: true

Size: 1.33 KB

Versions: 21

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true
require "graphql/backtrace/inspect_result"
require "graphql/backtrace/table"
require "graphql/backtrace/traced_error"
require "graphql/backtrace/tracer"
module GraphQL
  # Wrap unhandled errors with {TracedError}.
  #
  # {TracedError} provides a GraphQL backtrace with arguments and return values.
  # The underlying error is available as {TracedError#cause}.
  #
  # WARNING: {.enable} is not threadsafe because {GraphQL::Tracing.install} is not threadsafe.
  #
  # @example toggling backtrace annotation
  #   # to enable:
  #   GraphQL::Backtrace.enable
  #   # later, to disable:
  #   GraphQL::Backtrace.disable
  #
  class Backtrace
    include Enumerable
    extend GraphQL::Delegate

    def_delegators :to_a, :each, :[]

    def self.enable
      warn("GraphQL::Backtrace.enable is deprecated, add `use GraphQL::Backtrace` to your schema definition instead.")
      GraphQL::Tracing.install(Backtrace::Tracer)
      nil
    end

    def self.disable
      GraphQL::Tracing.uninstall(Backtrace::Tracer)
      nil
    end

    def self.use(schema_defn)
      schema_defn.tracer(self::Tracer)
    end

    def initialize(context, value: nil)
      @table = Table.new(context, value: value)
    end

    def inspect
      @table.to_table
    end

    alias :to_s :inspect

    def to_a
      @table.to_backtrace
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
graphql-1.8.0.pre10 lib/graphql/backtrace.rb
graphql-1.7.14 lib/graphql/backtrace.rb
graphql-1.8.0.pre9 lib/graphql/backtrace.rb
graphql-1.8.0.pre8 lib/graphql/backtrace.rb
graphql-1.7.13 lib/graphql/backtrace.rb
graphql-1.8.0.pre7 lib/graphql/backtrace.rb
graphql-1.7.12 lib/graphql/backtrace.rb
graphql-1.7.11 lib/graphql/backtrace.rb
graphql-1.7.10 lib/graphql/backtrace.rb
graphql-1.8.0.pre6 lib/graphql/backtrace.rb
graphql-1.8.0.pre5 lib/graphql/backtrace.rb
graphql-1.7.9 lib/graphql/backtrace.rb
graphql-1.8.0.pre4 lib/graphql/backtrace.rb
graphql-1.8.0.pre3 lib/graphql/backtrace.rb
graphql-1.7.8 lib/graphql/backtrace.rb
graphql-1.8.0.pre2 lib/graphql/backtrace.rb
graphql-1.7.7 lib/graphql/backtrace.rb
graphql-1.8.0.pre1 lib/graphql/backtrace.rb
graphql-1.7.6 lib/graphql/backtrace.rb
graphql-1.7.5 lib/graphql/backtrace.rb