Skip to content

Commit eca230c

Browse files
authored
Merge pull request #4504 from rmosolgo/fix-backtrace-true-with-other-traces
Fix backtrace: true with other trace modules
2 parents d9fd6a1 + 909d31d commit eca230c

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

lib/graphql/backtrace.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,5 @@ def initialize(path:, query:, ast_node:, object:, field:, arguments:, parent_fra
5555
@parent_frame = parent_frame
5656
end
5757
end
58-
59-
class DefaultBacktraceTrace < GraphQL::Tracing::Trace
60-
include GraphQL::Backtrace::Trace
61-
end
6258
end
6359
end

lib/graphql/schema.rb

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,17 @@ def trace_class(new_class = nil)
158158
def trace_class_for(mode)
159159
@trace_modes ||= {}
160160
@trace_modes[mode] ||= begin
161-
base_class = if superclass.respond_to?(:trace_class_for)
162-
superclass.trace_class_for(mode)
163-
elsif mode == :default_backtrace
164-
GraphQL::Backtrace::DefaultBacktraceTrace
161+
if mode == :default_backtrace
162+
schema_base_class = trace_class_for(:default)
163+
Class.new(schema_base_class) do
164+
include(GraphQL::Backtrace::Trace)
165+
end
166+
elsif superclass.respond_to?(:trace_class_for)
167+
superclass_base_class = superclass.trace_class_for(mode)
168+
Class.new(superclass_base_class)
165169
else
166-
GraphQL::Tracing::Trace
170+
Class.new(GraphQL::Tracing::Trace)
167171
end
168-
Class.new(base_class)
169172
end
170173
end
171174

spec/graphql/backtrace_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,4 +273,13 @@ def result
273273

274274
assert_equal expected_res, res
275275
end
276+
277+
it "includes other trace modules when backtrace is active" do
278+
custom_trace = Module.new
279+
schema = Class.new(GraphQL::Schema) do
280+
trace_with(custom_trace)
281+
end
282+
query = GraphQL::Query.new(schema, "{ __typename }", context: { backtrace: true })
283+
assert_includes query.current_trace.class.ancestors, custom_trace
284+
end
276285
end

0 commit comments

Comments
 (0)