Skip to content

Commit 21a8742

Browse files
committed
Merge pull request #55992 from jsharpify/jsharpify-reduce-deprecation-warnings
ActiveJob/serializers: Only index new serializers
1 parent a7ba88b commit 21a8742

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed

activejob/lib/active_job/serializers.rb

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,30 +51,34 @@ def deserialize(argument)
5151
attr_reader :serializers
5252

5353
def serializers=(serializers)
54-
@serializers = serializers
55-
index_serializers
54+
@serializers_index.clear
55+
@serializers = Set.new
56+
add_new_serializers(serializers)
5657
end
5758

5859
# Adds new serializers to a list of known serializers.
5960
def add_serializers(*new_serializers)
6061
new_serializers = new_serializers.flatten
61-
new_serializers.map! do |s|
62-
if s.is_a?(Class) && s < ObjectSerializer
63-
s.instance
64-
else
65-
s
66-
end
67-
end
68-
69-
@serializers += new_serializers
70-
index_serializers
71-
@serializers
62+
add_new_serializers(new_serializers)
7263
end
7364

7465
private
75-
def index_serializers
76-
@serializers_index.clear
77-
serializers.each do |s|
66+
def add_new_serializers(new_serializers)
67+
new_serializers.map! do |s|
68+
if s.is_a?(Class) && s < ObjectSerializer
69+
s.instance
70+
else
71+
s
72+
end
73+
end
74+
75+
@serializers += new_serializers
76+
index_serializers(new_serializers)
77+
@serializers
78+
end
79+
80+
def index_serializers(new_serializers)
81+
new_serializers.each do |s|
7882
if s.respond_to?(:klass)
7983
@serializers_index[s.klass] = s
8084
elsif s.respond_to?(:klass, true)

activejob/test/cases/serializers_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,16 @@ class TestSerializerWithoutKlass < ActiveJob::Serializers::ObjectSerializer; end
8484
assert_equal DummyValueObject.new(123), ActiveJob::Serializers.deserialize(hash)
8585
end
8686

87+
test "resets serializers when directly setting" do
88+
class DummySerializerAlt < DummySerializer
89+
def klass; DummySerializer end
90+
end
91+
ActiveJob::Serializers.add_serializers DummySerializer
92+
ActiveJob::Serializers.serializers = [DummySerializerAlt]
93+
assert ActiveJob::Serializers.serializers.include?(DummySerializerAlt.instance)
94+
assert_not ActiveJob::Serializers.serializers.include?(DummySerializer.instance)
95+
end
96+
8797
test "adds new serializer" do
8898
ActiveJob::Serializers.add_serializers DummySerializer
8999
assert ActiveJob::Serializers.serializers.include?(DummySerializer.instance)

0 commit comments

Comments
 (0)