rails_json_serializer 1.1.1 → 1.1.2

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: 0bd106c9225455d6c867d24cb50b6e06b012aea9f5faeccfab3b8a818756234e
4
- data.tar.gz: 85474e86d17b95e799a8178568cea0969f960ecb846e637133e299945ffea14b
3
+ metadata.gz: 9232f08e4be61f2f817b67e734253f02f4970625d32a3a48382170a11ffbc222
4
+ data.tar.gz: 58052d52689ed5376c0849f4b478cd319fabebb78d5e95dac9ca21f976fe831e
5
5
  SHA512:
6
- metadata.gz: 0d4ea1eaea84942b02b9b756614443b4cb84075b5c598465d220e5831c2628fb1dcacc7191ec3dabaabf33f1380bae1d6bbcb1739f610452581b3c1e6f62b664
7
- data.tar.gz: 9a5130aa48afcc73ee428f72315c24060e3606a75717c22268c4aa3e221169a2373d55eccbe348cfcc4a27fbab43fea769a1eaed210ba3c8248ec2aa438c2396
6
+ metadata.gz: d8ef6a39473a49fbb46e828ee7428cf237426802aabe9d2277b3d887ab83c49acf7337305a4589851a7c942389101b45618f899ff3afa42ae5803d0f23057290
7
+ data.tar.gz: a7a9a49810fde0ec0699d23aaadc24c80f9fd4bc277344646a92e28f4d654f63707c2b77b3ef1f533881f39b69a9882506efbb6e20ee4425e696e24836ee6ef5
data/lib/serializer.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'active_support/concern'
2
- require 'serializer/application_serializer'
2
+ require_relative 'serializer/application_serializer'
3
3
  Dir[File.join(Rails.root, 'app', 'serializers', '**', '*.rb')].each {|file| require file }
4
- require 'serializer/configuration'
5
- require 'serializer/concern'
4
+ require_relative 'serializer/configuration'
5
+ require_relative 'serializer/concern'
6
6
 
7
7
  module Serializer
8
8
  # config src: http://lizabinante.com/blog/creating-a-configurable-ruby-gem/
@@ -5,23 +5,25 @@ module Serializer
5
5
 
6
6
  # START MODEL INSTANCE METHODS
7
7
  def clear_serializer_cache
8
- if self.class.const_defined?("SerializerCacheQueryKeys")
9
- list_of_serializer_query_names = "#{self.class.name}::SerializerCacheQueryKeys".constantize
10
- list_of_serializer_query_names.each do |query_name|
8
+ if self.class.const_defined?("SERIALIZER_QUERY_KEYS_CACHE")
9
+
10
+ # list_of_serializer_query_names = "#{self.class.name}::SERIALIZER_QUERY_KEYS_CACHE".constantize
11
+ self.class.get_cumulatively_inherited_serializer_query_list.each do |query_name|
11
12
  cache_key = "#{self.class.name}_____#{query_name}___#{self.id}"
12
13
  Rails.logger.info "Serializer: CLEARING CACHE KEY: #{cache_key}" if Serializer.configuration.debug
13
14
  Rails.cache.delete(cache_key)
14
15
  end
15
16
  return true
16
17
  else
17
- if Serializer.configuration.debug
18
- Rails.logger.info(
18
+ # if Serializer.configuration.debug
19
+ Rails.logger.error(
19
20
  """
20
- Serializer: Class #{self.class.name} does not have the serializer module #{self.class.name}Serializer defined.
21
+ ERROR. COULD NOT CLEAR SERIALIZER CACHE FOR: Class #{self.class.name}
22
+ Serializer: Class #{self.class.name} may not have the serializer module #{self.class.name}Serializer defined.
21
23
  Nor was it defined on an inheriting class.
22
24
  """
23
25
  )
24
- end
26
+ # end
25
27
  return nil
26
28
  end
27
29
  end
@@ -76,11 +78,23 @@ module Serializer
76
78
  serializer_klass = "#{subclass.name}Serializer".constantize
77
79
 
78
80
  if serializer_klass.class == Module
79
- if !serializer_klass.const_defined?("SerializerMethods")
80
- serializer_klass.const_set('SerializerMethods', Module.new {})
81
+ if !serializer_klass.const_defined?("SerializerClassAndInstanceMethods")
82
+ serializer_klass.const_set('SerializerClassAndInstanceMethods', Module.new {})
83
+ end
84
+ if !serializer_klass.const_defined?("SerializerClassMethods")
85
+ serializer_klass.const_set('SerializerClassMethods', Module.new {})
86
+ serializer_klass::SerializerClassMethods.send(:define_method, :get_cumulatively_inherited_serializer_query_list) do |opts = {}|
87
+ if defined?(super)
88
+ return (subclass::SERIALIZER_QUERY_KEYS_CACHE + superclass.get_cumulatively_inherited_serializer_query_list).uniq
89
+ else
90
+ return subclass::SERIALIZER_QUERY_KEYS_CACHE
91
+ end
92
+ end
81
93
  end
82
94
 
83
- serializer_klass.public_instance_methods.each do |query_name|
95
+ serializer_query_names = serializer_klass.public_instance_methods
96
+
97
+ serializer_query_names.each do |query_name|
84
98
  serializer_name = query_name[/(?<name>.+)_query/, :name]
85
99
  if serializer_name.nil?
86
100
  Rails.logger.info "Serializer: #{serializer_klass.name} method #{query_name} does not end in '(.+)_query', as is expected of serializers" if Serializer.configuration.debug
@@ -89,26 +103,28 @@ module Serializer
89
103
  # Skip if chosen to override it.
90
104
  next if serializer_klass.respond_to?(serializer_name)
91
105
  if serializer_name == 'serializer'
92
- serializer_klass::SerializerMethods.send(:define_method, serializer_name) do |opts = {}|
106
+ serializer_klass::SerializerClassAndInstanceMethods.send(:define_method, serializer_name) do |opts = {}|
93
107
  super({json_query_override: query_name}.merge(opts))
94
108
  end
95
109
  else
96
- serializer_klass::SerializerMethods.send(:define_method, serializer_name) do |opts = {}|
110
+ serializer_klass::SerializerClassAndInstanceMethods.send(:define_method, serializer_name) do |opts = {}|
97
111
  serializer({json_query_override: query_name}.merge(opts))
98
112
  end
99
113
  end
100
114
  end
101
115
 
102
116
  # Inject instance methods
103
- subclass.send(:include, serializer_klass::SerializerMethods)
117
+ subclass.send(:include, serializer_klass::SerializerClassAndInstanceMethods)
104
118
  # Inject class methods
105
- subclass.send(:extend, serializer_klass::SerializerMethods)
119
+ subclass.send(:extend, serializer_klass::SerializerClassAndInstanceMethods)
106
120
  # Inject class methods that has queries
107
121
  subclass.send(:extend, serializer_klass)
108
122
  # Injecting the Serializer Methods as a namespaced class of the rails class, so we can have
109
123
  # access to the list of methods to clear their cache.
110
124
  # 'Class Name + Serializer' does not work with inheritence.
111
- subclass.const_set('SerializerCacheQueryKeys', serializer_klass.public_instance_methods)
125
+ subclass.const_set('SERIALIZER_QUERY_KEYS_CACHE', serializer_query_names)
126
+ # Inject class methods
127
+ subclass.send(:extend, serializer_klass::SerializerClassMethods)
112
128
  else
113
129
  Rails.logger.info "Serializer: #{serializer_klass.name} was not a Module as expected" if Serializer.configuration.debug
114
130
  end
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: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - benjamin.dana.software.dev@gmail.com
@@ -11,19 +11,103 @@ cert_chain: []
11
11
  date: 2020-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '5.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: listen
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: database_cleaner
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
25
109
  - !ruby/object:Gem::Version
26
- version: '5.0'
110
+ version: '1.4'
27
111
  description:
28
112
  email:
29
113
  executables: []
@@ -36,7 +120,7 @@ files:
36
120
  - lib/serializer/configuration.rb
37
121
  homepage: https://github.com/danabr75/rails_json_serializer
38
122
  licenses:
39
- - GNU
123
+ - LGPL-3.0-only
40
124
  metadata: {}
41
125
  post_install_message:
42
126
  rdoc_options: []