File tree Expand file tree Collapse file tree 2 files changed +18
-7
lines changed Expand file tree Collapse file tree 2 files changed +18
-7
lines changed Original file line number Diff line number Diff line change
1
+ require 'thread_safe'
2
+
1
3
module ActiveModel
2
4
class Serializer
3
5
extend ActiveSupport ::Autoload
@@ -201,18 +203,24 @@ def serializer_from_options(options)
201
203
opts
202
204
end
203
205
206
+ def self . serializers_cache
207
+ @serializers_cache ||= ThreadSafe ::Cache . new
208
+ end
209
+
204
210
private
205
211
206
212
attr_reader :options
207
213
208
214
def self . get_serializer_for ( klass )
209
- serializer_class_name = "#{ klass . name } Serializer"
210
- serializer_class = serializer_class_name . safe_constantize
211
-
212
- if serializer_class
213
- serializer_class
214
- elsif klass . superclass
215
- get_serializer_for ( klass . superclass )
215
+ serializers_cache . fetch_or_store ( klass ) do
216
+ serializer_class_name = "#{ klass . name } Serializer"
217
+ serializer_class = serializer_class_name . safe_constantize
218
+
219
+ if serializer_class
220
+ serializer_class
221
+ elsif klass . superclass
222
+ get_serializer_for ( klass . superclass )
223
+ end
216
224
end
217
225
end
218
226
Original file line number Diff line number Diff line change 9
9
10
10
ActiveSupport . on_load ( :action_controller ) do
11
11
include ::ActionController ::Serialization
12
+ ActionDispatch ::Reloader . to_prepare do
13
+ ActiveModel ::Serializer . serializers_cache . clear
14
+ end
12
15
end
13
16
rescue LoadError
14
17
# rails not installed, continuing
You can’t perform that action at this time.
0 commit comments