@@ -12,6 +12,22 @@ class Serializer
12
12
include Configuration
13
13
include Associations
14
14
15
+
16
+ # Matches
17
+ # "c:/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb:1:in `<top (required)>'"
18
+ # AND
19
+ # "/c/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb:1:in `<top (required)>'"
20
+ # AS
21
+ # c/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb
22
+ CALLER_FILE = /
23
+ \A # start of string
24
+ \S + # one or more non-spaces
25
+ (?= # stop previous match when
26
+ :\d + # a colon is followed by one or more digits
27
+ :in # followed by a colon followed by in
28
+ )
29
+ /x
30
+
15
31
class << self
16
32
attr_accessor :_attributes
17
33
attr_accessor :_attributes_keys
@@ -29,8 +45,7 @@ def self.inherited(base)
29
45
base . _attributes = self . _attributes . try ( :dup ) || [ ]
30
46
base . _attributes_keys = self . _attributes_keys . try ( :dup ) || { }
31
47
base . _urls = [ ]
32
- serializer_file = File . open ( caller . first [ /^[^:]+/ ] )
33
- base . _cache_digest = Digest ::MD5 . hexdigest ( serializer_file . read )
48
+ base . _cache_digest = digest_caller_file ( caller . first )
34
49
super
35
50
end
36
51
@@ -161,6 +176,12 @@ def self.serializers_cache
161
176
@serializers_cache ||= ThreadSafe ::Cache . new
162
177
end
163
178
179
+ def self . digest_caller_file ( caller_line )
180
+ serializer_file_path = caller_line [ CALLER_FILE ]
181
+ serializer_file_contents = IO . read ( serializer_file_path )
182
+ Digest ::MD5 . hexdigest ( serializer_file_contents )
183
+ end
184
+
164
185
attr_reader :options
165
186
166
187
def self . get_serializer_for ( klass )
0 commit comments