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 +4 -4
- data/lib/serializer.rb +3 -3
- data/lib/serializer/concern.rb +31 -15
- metadata +91 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9232f08e4be61f2f817b67e734253f02f4970625d32a3a48382170a11ffbc222
|
4
|
+
data.tar.gz: 58052d52689ed5376c0849f4b478cd319fabebb78d5e95dac9ca21f976fe831e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
2
|
+
require_relative 'serializer/application_serializer'
|
3
3
|
Dir[File.join(Rails.root, 'app', 'serializers', '**', '*.rb')].each {|file| require file }
|
4
|
-
|
5
|
-
|
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/
|
data/lib/serializer/concern.rb
CHANGED
@@ -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?("
|
9
|
-
|
10
|
-
list_of_serializer_query_names
|
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.
|
18
|
+
# if Serializer.configuration.debug
|
19
|
+
Rails.logger.error(
|
19
20
|
"""
|
20
|
-
|
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?("
|
80
|
-
serializer_klass.const_set('
|
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
|
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::
|
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::
|
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::
|
117
|
+
subclass.send(:include, serializer_klass::SerializerClassAndInstanceMethods)
|
104
118
|
# Inject class methods
|
105
|
-
subclass.send(:extend, serializer_klass::
|
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('
|
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.
|
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:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5.
|
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: '
|
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
|
-
-
|
123
|
+
- LGPL-3.0-only
|
40
124
|
metadata: {}
|
41
125
|
post_install_message:
|
42
126
|
rdoc_options: []
|