rails_json_serializer 3.1.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3fc5e7e81a63f10f7944eed51908b6b0c64b348398b78119a2cb5613a5624d5
4
- data.tar.gz: 107b8bb149af177a79c96ed017b42ebe3008d1685811225de3b25209d01a780c
3
+ metadata.gz: 4a17108258803bac91fbf2506e02b2953fe1d49c4ae3758acea6a6b8671a5cf0
4
+ data.tar.gz: f8e2ad23101fe3ba7a9253d6dbeec9d82b1c5f9392ce2df8c47db74326921858
5
5
  SHA512:
6
- metadata.gz: '083495f8ec6a05a677273d64d86ac31920d6f37b4b55cb81995812d7f24520630562cfce1905d87cb91bc8c31284a60430aef164dc9826b19f435eff24b1ac2b'
7
- data.tar.gz: 1feb1b497f6e4d5ab03f9ff7e9de02f672990b5555606fe896c58351656f4c3937b75e8334404c87b309a5cd300ec213bb0e556c7f3a686d0601e9137f835495
6
+ metadata.gz: f95e665cd9adfc8c9900ba981d75af1b2448cb8c23baa41454b63aaeaf49e5fc04846ab60d18bbc2991491d3a7b310666a863ba830fad71fee18225a88db0f38
7
+ data.tar.gz: 8f7b66cce88ba721b58ce24a76d7a75791f61054ab0da38de23a495aa1f1d20c1d93b344cc4b393dc2479727c9d589bdfd4de807563ad8cf3465239aa4011901
@@ -4,6 +4,8 @@ module ModelSerializer
4
4
  # START CLASS EVAL
5
5
  klass.class_eval do
6
6
 
7
+
8
+ # I don't think we need to check for classname + serialiers. We are now including via: `include ModelSerializer` in classes
7
9
  # Rails 5 has autoloading issues with modules. They will show as not defined, when available.
8
10
  if Rails.env.development?
9
11
  begin
@@ -38,9 +40,16 @@ module ModelSerializer
38
40
  end
39
41
 
40
42
  # no need to define it if inheriting class has defined it OR has been manually overridden.
41
- # CLASS METHODS
42
- klass.send(:define_singleton_method, :serializer) do |opts = {}|
43
+ # CLASS METHOD - :serializer
44
+ klass.send(:define_singleton_method, :serializer) do |opts = {}|
45
+ # puts "CLASS METHOD - SERIALIZER - OPTS: #{opts.inspect}"
43
46
  query = opts[:json_query_override].present? ? self.send(opts[:json_query_override], opts) : serializer_query(opts)
47
+
48
+ # if as_json arg, then add to as_json query
49
+ if opts[:disable_caching] == true
50
+ query[:disable_caching] = true
51
+ end
52
+
44
53
  if Serializer.configuration.enable_includes && query[:include].present? && !opts[:skip_eager_loading]
45
54
  includes(generate_includes_from_json_query(query)).as_json(query)
46
55
  else
@@ -126,8 +135,9 @@ module ModelSerializer
126
135
  if !Serializer.configuration.disable_model_caching && self.id && options[:cache_key].present? && !(options.key?(:cache_for) && options[:cache_for].nil?)
127
136
  cache_key = Serializer.configuration.cache_key.call(self.class.name, options[:cache_key], self.id)
128
137
 
129
- if Rails.cache.exist?(cache_key)
138
+ if Rails.cache.exist?(cache_key) && options[:disable_caching] != true
130
139
  Rails.logger.debug "Serializer: Cache reading #{cache_key}" if Serializer.configuration.debug
140
+ # Rails.logger.debug(options.inspect) if Serializer.configuration.debug
131
141
  outgoing_data = Rails.cache.read(cache_key)
132
142
  if (options.key?(:compress) && options[:compress] == true) || (!options.key?(:compress) && Serializer.configuration.compress)
133
143
  outgoing_data = Serializer.configuration.decompressor.call(outgoing_data)
@@ -137,21 +147,25 @@ module ModelSerializer
137
147
  data = super(options)
138
148
  data = self.class.as_json_associations_alias_fix(options, data)
139
149
 
140
- # compress data
141
- cachable_data = data
142
- if (options.key?(:compress) && options[:compress] == true) || (!options.key?(:compress) && Serializer.configuration.compress)
143
- cachable_data = Serializer.configuration.compressor.call(data)
150
+ if options[:disable_caching] != true
151
+ # compress data
152
+ cachable_data = data
153
+ if (options.key?(:compress) && options[:compress] == true) || (!options.key?(:compress) && Serializer.configuration.compress)
154
+ cachable_data = Serializer.configuration.compressor.call(data)
155
+ end
156
+ begin
157
+ Rails.logger.debug "Serializer: Caching #{cache_key} for #{(options[:cache_for] || Serializer.configuration.default_cache_time)} minutes." if Serializer.configuration.debug
158
+ Rails.cache.write(cache_key, cachable_data, expires_in: (options[:cache_for] || Serializer.configuration.default_cache_time).minute)
159
+ rescue Exception => e
160
+ Rails.logger.error "Serializer: Internal Server Error on #{self.class}#as_json ID: #{self.id} for cache key: #{cache_key}"
161
+ Rails.logger.error e.class
162
+ Rails.logger.error e.message
163
+ Rails.logger.error e.backtrace
164
+ end
165
+ else
166
+ Rails.logger.debug "Serializer: Cache reading/writing for #{cache_key} is disabled" if Serializer.configuration.debug
144
167
  end
145
168
 
146
- begin
147
- Rails.logger.debug "Serializer: Caching #{cache_key} for #{(options[:cache_for] || Serializer.configuration.default_cache_time)} minutes." if Serializer.configuration.debug
148
- Rails.cache.write(cache_key, cachable_data, expires_in: (options[:cache_for] || Serializer.configuration.default_cache_time).minute)
149
- rescue Exception => e
150
- Rails.logger.error "Serializer: Internal Server Error on #{self.class}#as_json ID: #{self.id} for cache key: #{cache_key}"
151
- Rails.logger.error e.class
152
- Rails.logger.error e.message
153
- Rails.logger.error e.backtrace
154
- end
155
169
  return data
156
170
  end
157
171
  else
@@ -164,9 +178,17 @@ module ModelSerializer
164
178
  end
165
179
  end
166
180
 
181
+ # INSTANCE METHOD - :serializer
167
182
  if !klass.method_defined?(:serializer)
168
183
  klass.send(:define_method, :serializer) do |opts = {}|
184
+ # puts "INSTANCE METHOD - SERIALIZER - OPTS: #{opts.inspect}"
169
185
  query = opts[:json_query_override].present? ? self.class.send(opts[:json_query_override], opts) : self.class.serializer_query(opts)
186
+
187
+ # if as_json arg, then add to as_json query
188
+ if opts[:disable_caching] == true
189
+ query[:disable_caching] = true
190
+ end
191
+
170
192
  if Serializer.configuration.enable_includes && query[:include].present? && self.class.column_names.include?('id') && self.id.present? && !opts[:skip_eager_loading] && self.respond_to?(:persisted?) && self.persisted?
171
193
  # It's an extra SQL call, but most likely worth it to pre-load associations
172
194
  self.class.includes(self.class.generate_includes_from_json_query(query)).find(self.id).as_json(query)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_json_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - benjamin.dana.software.dev@gmail.com
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  requirements: []
153
- rubygems_version: 3.1.6
153
+ rubygems_version: 3.1.4
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: An ActiveRecord JSON Serializer with supported caching and eager-loading