@@ -27,6 +27,20 @@ class Serializer
27
27
)
28
28
/x
29
29
30
+ # Hashes contents of file for +_cache_digest+
31
+ def self . digest_caller_file ( caller_line )
32
+ serializer_file_path = caller_line [ CALLER_FILE ]
33
+ serializer_file_contents = IO . read ( serializer_file_path )
34
+ Digest ::MD5 . hexdigest ( serializer_file_contents )
35
+ rescue TypeError , Errno ::ENOENT
36
+ warn <<-EOF . strip_heredoc
37
+ Cannot digest non-existent file: '#{ caller_line } '.
38
+ Please set `::_cache_digest` of the serializer
39
+ if you'd like to cache it.
40
+ EOF
41
+ '' . freeze
42
+ end
43
+
30
44
with_options instance_writer : false , instance_reader : false do |serializer |
31
45
class_attribute :_type , instance_reader : true
32
46
class_attribute :_attributes
@@ -43,9 +57,10 @@ class Serializer
43
57
end
44
58
45
59
def self . inherited ( base )
60
+ caller_line = caller . first
46
61
base . _attributes = _attributes . dup
47
62
base . _attributes_keys = _attributes_keys . dup
48
- base . _cache_digest = digest_caller_file ( caller . first )
63
+ base . _cache_digest = digest_caller_file ( caller_line )
49
64
super
50
65
end
51
66
@@ -105,12 +120,6 @@ def self.serializers_cache
105
120
@serializers_cache ||= ThreadSafe ::Cache . new
106
121
end
107
122
108
- def self . digest_caller_file ( caller_line )
109
- serializer_file_path = caller_line [ CALLER_FILE ]
110
- serializer_file_contents = IO . read ( serializer_file_path )
111
- Digest ::MD5 . hexdigest ( serializer_file_contents )
112
- end
113
-
114
123
# @api private
115
124
def self . serializer_lookup_chain_for ( klass )
116
125
chain = [ ]
0 commit comments