Skip to content

Commit ff6a770

Browse files
committed
Re-apply default modules when a new default trace class is added
1 parent 414cb8e commit ff6a770

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

lib/graphql/schema.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ def default_trace_mode(new_mode = nil)
158158

159159
def trace_class(new_class = nil)
160160
if new_class
161+
# If any modules were already added for `:default`,
162+
# re-apply them here
163+
mods = trace_modules_for(:default)
164+
mods.each { |mod| new_class.include(mod) }
161165
trace_mode(:default, new_class)
162166
backtrace_class = Class.new(new_class)
163167
backtrace_class.include(GraphQL::Backtrace::Trace)

spec/graphql/tracing/trace_modes_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@ def execute_query(query:)
148148
GraphQL::Schema.send(:own_tracers).delete(tracer_class)
149149
GraphQL::Schema.own_trace_modes[:default] = GraphQL::Schema.build_trace_mode(:default)
150150
refute_includes GraphQL::Schema.new_trace.class.ancestors, GraphQL::Tracing::CallLegacyTracers
151+
ensure
152+
# Since this modifies the base class, make sure it's undone for future test cases
153+
GraphQL::Schema.instance_variable_get(:@own_tracers).clear
154+
GraphQL::Schema.own_trace_modes.clear
155+
GraphQL::Schema.own_trace_modules.clear
156+
GraphQL::Schema.instance_variable_get(:@trace_options_for_mode).clear
151157
end
152158
end
153159

0 commit comments

Comments
 (0)