Skip to content

Commit f72ae06

Browse files
committed
fix(active_job): remove nil from global serializers set during app re-initialization
1 parent 7b149f5 commit f72ae06

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

sentry-rails/spec/dummy/test_rails_app/config/application.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,20 @@ def before_initialize!
143143
end
144144

145145
def after_initialize!
146+
# The active_job.custom_serializers railtie initializer calls
147+
# add_serializers(app.config.active_job.custom_serializers). Under some
148+
# Rails/Ruby combinations custom_serializers resolves to nil instead of the
149+
# railtie default of [], inserting nil into the global serializers Set.
150+
# Remove it right after initialization so it cannot affect any test.
151+
# Rails < 8 uses mattr_accessor _additional_serializers; Rails 8+ uses @serializers.
152+
if defined?(::ActiveJob::Serializers)
153+
if ::ActiveJob::Serializers.respond_to?(:_additional_serializers)
154+
::ActiveJob::Serializers._additional_serializers.delete(nil)
155+
elsif ::ActiveJob::Serializers.instance_variable_defined?(:@serializers)
156+
::ActiveJob::Serializers.instance_variable_get(:@serializers).delete(nil)
157+
end
158+
end
159+
146160
if Sentry.initialized?
147161
# Run a query to make sure the schema metadata gets loaded and cached
148162
Post.all.to_a.inspect

0 commit comments

Comments
 (0)