rails_json_serializer 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []