easy_serializer 0.1.3 → 0.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
  SHA1:
3
- metadata.gz: 358888cc7f61e9b3510147bbe505d1418225b41e
4
- data.tar.gz: 2de0f0cda813e67bd51a10166da9b05a5d854f8b
3
+ metadata.gz: e23789313fd87585246d0510e59fa3c512d41587
4
+ data.tar.gz: c7bdfb7eb7f55d31f1e6a57e0009e713d88f5eb0
5
5
  SHA512:
6
- metadata.gz: 09d793a662fb451a75f0a503361e62f1d38677f46e3297b432d31348f11d810c1c87dd88efbc00ff35177cde624189303273f3a730ec86c3c2d840f3f519b66c
7
- data.tar.gz: 5855120cdba4d4eb42e77c7da6f0e25ab80225f62c9ada0cb19298cd09078c16c3126b66c7cf2766cce7bcd54cc905f2d4d05e6b1e6007d978fc9d83beaad568
6
+ metadata.gz: 19671f04e8fa2537334650ea8cc386932b38ac8e754c2d8b8fdfce9b6508b2f208f542ca6d7c81c47ceb59fc8d590b1bb6cb3034f713f44625fd72ad13951d75
7
+ data.tar.gz: 3a2aa87a28f38e80b90e1a5d91a90dcae99491af22513bd015cebcf72f8df3eb3cc17660f465f287f5cdcd31d54e18d9709d6ffb2905512e919797997fa36f4e
data/.coveralls.yml ADDED
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+ repo_token: v9fcGs1CUZiWzFqYYpYYPAVTbxDbM6cm5
data/.travis.yml CHANGED
@@ -1,4 +1,34 @@
1
+ sudo: false
2
+ cache: bundler
1
3
  language: ruby
2
4
  rvm:
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - 2.1
3
8
  - 2.1.6
4
- before_install: gem install bundler -v 1.10.4
9
+ - 2.2
10
+ - 2.3.0
11
+ - ruby-head
12
+ - jruby-19mode
13
+ - jruby-9.0.1.0
14
+ - rbx-3
15
+ env:
16
+ # this doesn't do anything for MRI or RBX, but it doesn't hurt them either
17
+ # for JRuby, it enables us to get more accurate coverage data
18
+ - JRUBY_OPTS="--debug"
19
+ matrix:
20
+ allow_failures:
21
+ - rvm: 1.9.3
22
+ - rvm: ruby-head
23
+ - rvm: rbx-3
24
+ - rvm: jruby-19mode
25
+ - rvm: jruby-9.0.1.0
26
+ fast_finish: true
27
+ before_install: gem update --remote bundler
28
+ install:
29
+ - bundle install --retry=3
30
+ script:
31
+ - bundle exec rspec
32
+ addons:
33
+ code_climate:
34
+ repo_token: 723c5d2fd0e1726d6efeea17ecd5aa22d0945a942ba3b21fdebc03f733359706
data/Gemfile CHANGED
@@ -3,4 +3,6 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in easy_serializer.gemspec
4
4
  gemspec
5
5
  gem 'pry'
6
- gem 'simplecov', :require => false, :group => :test
6
+ gem 'contextuable', '~> 0.4'
7
+ gem 'coveralls', require: false
8
+ gem "codeclimate-test-reporter", group: :test, require: false
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # EasySerializer
2
2
 
3
- [ ![Codeship Status for arturictus/easy_serializer](https://codeship.com/projects/5a101d20-6dda-0133-b7b2-666194911eaf/status?branch=master)](https://codeship.com/projects/115737)
4
- [![Code Climate](https://codeclimate.com/github/arturictus/easy_serializer/badges/gpa.svg)](https://codeclimate.com/github/arturictus/easy_serializer)
3
+ [![Build Status](https://travis-ci.org/arturictus/easy_serializer.svg?branch=master)](https://travis-ci.org/arturictus/easy_serializer)
4
+ [![Gem Version](https://badge.fury.io/rb/easy_serializer.svg)](https://badge.fury.io/rb/easy_serializer)
5
5
  [![Test Coverage](https://codeclimate.com/github/arturictus/easy_serializer/badges/coverage.svg)](https://codeclimate.com/github/arturictus/easy_serializer/coverage)
6
+ [![Code Climate](https://codeclimate.com/github/arturictus/easy_serializer/badges/gpa.svg)](https://codeclimate.com/github/arturictus/easy_serializer)
7
+ [![Issue Count](https://codeclimate.com/github/arturictus/easy_serializer/badges/issue_count.svg)](https://codeclimate.com/github/arturictus/easy_serializer)
6
8
 
7
9
  Semantic serializer for making easy serializing objects.
8
10
  EasySerializer is inspired in [ActiveModel Serializer > 0.10] (https://github.com/rails-api/active_model_serializers/tree/v0.10.0.rc3) it's a
@@ -3,6 +3,7 @@ require 'active_support/all'
3
3
 
4
4
  module EasySerializer
5
5
  include ActiveSupport::Configurable
6
+ extend ActiveSupport::Autoload
6
7
 
7
8
  def self.setup
8
9
  yield self
@@ -10,9 +11,14 @@ module EasySerializer
10
11
 
11
12
  config_accessor(:perform_caching) { false }
12
13
  config_accessor(:cache)
13
- end
14
14
 
15
- require 'easy_serializer/helpers'
16
- require 'easy_serializer/cacher'
17
- require 'easy_serializer/attribute'
18
- require 'easy_serializer/base'
15
+ autoload :Helpers
16
+ autoload :Cacher
17
+ autoload :RootCacher
18
+ autoload :Attribute
19
+ autoload :AttributeSerializer
20
+ autoload :Base
21
+ autoload :CacheOutput
22
+ autoload :Field
23
+ autoload :Collection
24
+ end
@@ -1,60 +1,15 @@
1
1
  module EasySerializer
2
- Attribute = Struct.new(:serializer, :setup) do
2
+ class Attribute < Field
3
3
  include Helpers
4
- def self.call(serializer, setup)
5
- new(serializer, setup).value
6
- end
7
-
8
- def object
9
- serializer.object
10
- end
11
- def value
12
- value_or_default
13
- end
14
-
15
- def value_or_default
16
- value = attr_serializer
17
- if value.nil? && setup[:default]
18
- return option_to_value(setup[:default], object, serializer)
19
- end
20
- value
21
- end
22
4
 
23
- def attr_serializer
24
- value = cache_or_attribute
25
- return value.output if value.is_a?(CacheOutput)
26
- return value unless serializer_class = setup[:serializer]
27
- if setup[:collection]
28
- Array.wrap(value).map { |o| serialize!(serializer_class, o) }
29
- else
30
- serialize!(serializer_class, value)
31
- end
32
- end
33
- def send_name(obj)
34
- obj.send(setup[:name])
5
+ def default?
6
+ options[:default]
35
7
  end
36
8
 
37
- def cache_or_attribute
38
- execute = setup[:block] || method(:send_name)
39
- if EasySerializer.perform_caching && setup[:cache]
40
- Cacher.call(serializer, setup, nil, &execute)
41
- else
42
- serializer.instance_exec object, &execute
43
- end
9
+ def get_default(object, serializer)
10
+ return unless default?
11
+ option_to_value(options[:default], object, serializer)
44
12
  end
45
13
 
46
- def send_to_serializer(serializer_class, value)
47
- return unless value
48
- option_to_value(serializer_class, value, serializer).call(value)
49
- end
50
-
51
- def serialize!(serializer_class, value)
52
- return unless value
53
- if EasySerializer.perform_caching && setup[:cache]
54
- Cacher.call(serializer, setup, value)
55
- else
56
- send_to_serializer(serializer_class, value)
57
- end
58
- end
59
14
  end
60
15
  end
@@ -0,0 +1,51 @@
1
+ module EasySerializer
2
+ AttributeSerializer = Struct.new(:serializer, :metadata) do
3
+ include Helpers
4
+ def self.call(serializer, metadata)
5
+ new(serializer, metadata).value
6
+ end
7
+
8
+ def object
9
+ serializer.object
10
+ end
11
+
12
+ def value
13
+ value_or_default
14
+ end
15
+
16
+ def value_or_default
17
+ value = attr_serializer
18
+ # Check if value is nil
19
+ # eval option default ( in case is block)
20
+ if value.nil?
21
+ return metadata.get_default(object, serializer)
22
+ end
23
+ value
24
+ end
25
+
26
+ def attr_serializer
27
+ value = cache_or_attribute
28
+
29
+ return value.output if value.is_a?(CacheOutput)
30
+ return value unless metadata.nested_serializer?
31
+ if metadata.is_a? Collection
32
+ Array.wrap(value).map { |o| nested_serialization!(o) }
33
+ else
34
+ nested_serialization!(value)
35
+ end
36
+ end
37
+
38
+ def cache_or_attribute
39
+ if EasySerializer.perform_caching && metadata.catch?
40
+ Cacher.new(serializer, metadata).execute
41
+ else
42
+ serializer.instance_exec object, &metadata.get_value
43
+ end
44
+ end
45
+
46
+ def nested_serialization!(value)
47
+ return unless value
48
+ metadata.serialize!(value, serializer)
49
+ end
50
+ end
51
+ end
@@ -19,7 +19,7 @@ module EasySerializer
19
19
 
20
20
  def attribute(name, opts = {}, &block)
21
21
  @__serializable_attributes ||= []
22
- @__serializable_attributes << { name: name, block: block }.merge(opts)
22
+ @__serializable_attributes << Attribute.new(name, opts, block)
23
23
  end
24
24
 
25
25
  def cache(bool, opts = {}, &block)
@@ -35,8 +35,8 @@ module EasySerializer
35
35
  end
36
36
 
37
37
  def collection(name, opts = {}, &block)
38
- opts = opts.merge(collection: true)
39
- attribute(name, opts, &block)
38
+ @__serializable_attributes ||= []
39
+ @__serializable_attributes << Collection.new(name, opts, block)
40
40
  end
41
41
  end
42
42
 
@@ -52,15 +52,19 @@ module EasySerializer
52
52
  option_to_value(serializer, value).call(value)
53
53
  end
54
54
 
55
+ def __cache
56
+ self.class.instance_variable_get(:@__cache)
57
+ end
58
+
55
59
  private
56
60
 
57
61
  def _serialize
58
- __serializable_attributes.each_with_object({}) do |setup, hash|
59
- if setup[:key] === false
60
- hash.merge!(value_or_default(setup))
62
+ __serializable_attributes.each_with_object({}) do |metadata, hash|
63
+ if metadata.options[:key] === false
64
+ hash.merge!(value_or_default(metadata))
61
65
  else
62
- key = (setup[:key] ? setup[:key] : setup[:name])
63
- hash[key] = value_or_default(setup)
66
+ key = (metadata.options[:key] ? metadata.options[:key] : metadata.name)
67
+ hash[key] = value_or_default(metadata)
64
68
  end
65
69
  end
66
70
  end
@@ -69,62 +73,16 @@ module EasySerializer
69
73
  return false unless EasySerializer.perform_caching
70
74
  cache = __cache
71
75
  return false unless cache
72
- Cacher.root_call(self, cache, object) { _serialize }.output
73
- end
74
-
75
- def __cache
76
- self.class.instance_variable_get(:@__cache)
76
+ RootCacher.call(self){ _serialize }
77
77
  end
78
78
 
79
79
  def __serializable_attributes
80
80
  self.class.instance_variable_get(:@__serializable_attributes) || []
81
81
  end
82
82
 
83
- def value_or_default(setup)
84
- Attribute.call(self, setup)
83
+ def value_or_default(metadata)
84
+ AttributeSerializer.call(self, metadata)
85
85
  end
86
86
 
87
- # def value_or_default(setup)
88
- # value = attr_serializer(setup)
89
- # if value.nil? && setup[:default]
90
- # return option_to_value(setup[:default], object)
91
- # end
92
- # value
93
- # end
94
- #
95
- # def attr_serializer(setup)
96
- # value = cache_or_attribute(setup)
97
- # return value if value.respond_to?(:fetch) || value.respond_to?(:each)
98
- # return value unless serializer = setup[:serializer]
99
- # if setup[:collection]
100
- # Array.wrap(value).map { |o| cache_or_serialize(serializer, o, setup) }
101
- # else
102
- # cache_or_serialize(serializer, value, setup)
103
- # end
104
- # end
105
- #
106
- # def cache_or_attribute(setup)
107
- # execute = setup[:block] || proc { |o| o.send(setup[:name]) }
108
- # if EasySerializer.perform_caching && setup[:cache]
109
- # Cacher.call(self, setup, nil, &execute)
110
- # else
111
- # if object.respond_to?(:each)
112
- # object.map { |o| instance_exec o, &execute }
113
- # else
114
- # instance_exec object, &execute
115
- # end
116
- # end
117
- # end
118
- #
119
- # def cache_or_serialize(serializer, value, opts)
120
- # return unless value
121
- # if EasySerializer.perform_caching && opts[:cache]
122
- # Cacher.call(self, opts, value)
123
- # else
124
- # send_to_serializer(serializer, value)
125
- # end
126
- # end
127
-
128
-
129
87
  end
130
88
  end
@@ -0,0 +1,3 @@
1
+ module EasySerializer
2
+ CacheOutput = Struct.new(:output)
3
+ end
@@ -1,80 +1,31 @@
1
1
  module EasySerializer
2
- CacheOutput = Struct.new(:output)
3
- Cacher = Struct.new(:serializer) do
4
- include Helpers
5
-
6
- def self.call(serializer, options, value, &block)
7
- Cacher.new(serializer)
8
- .set(options: options, block: block, value: value)
9
- .execute
10
- end
11
-
12
- def self.root_call(serializer, options, value, &block)
13
- options[:cache_key] = options[:key]
14
- options[:root_call] = true
15
- call(serializer, options, value, &block)
16
- end
17
-
18
- attr_accessor :object, :options, :block
19
- attr_writer :value
20
-
21
- delegate :object, to: :serializer
22
-
23
- def set(options)
24
- options.each { |k, v| send("#{k}=", v) }
25
- self
2
+ class Cacher
3
+ attr_reader :serializer, :metadata
4
+ def initialize(serializer, metadata)
5
+ @serializer = serializer
6
+ @metadata = metadata
26
7
  end
27
8
 
28
- def value
29
- return unless object && block
30
- @value ||= serializer.instance_exec object, &block
31
- end
32
-
33
- def key(_value = nil)
34
- _value ||= value
35
- @key ||= if options[:cache_key]
36
- option_to_value(options[:cache_key], _value, serializer)
37
- elsif options[:serializer] || options[:root_call]
38
- [_value, 'EasySerialized'].flatten
39
- else
40
- [_value, options[:name], 'EasySerialized'].flatten
41
- end
42
- end
43
-
44
- def options_for_cache
45
- if options[:root_call]
46
- options.except(:block, :cache_key, :root_call, :serializer, :key)
47
- else
48
- options[:cache_options]
49
- end || {}
50
- end
51
-
52
- def _block_to_execute(_value = nil)
53
- _value ||= value
54
- if options[:serializer]
55
- proc { serializer.send_to_serializer(options[:serializer], _value) }
56
- else
57
- proc { serializer.instance_exec object, &block }
58
- end
59
- end
60
-
61
- def fetch(_key = nil, _value = nil)
62
- _key ||= key
63
- _value ||= value
64
- EasySerializer.cache.fetch(_key, options_for_cache, &_block_to_execute(_value))
9
+ def execute
10
+ CacheOutput.new(_execute)
65
11
  end
66
12
 
67
- def wrap(elem)
68
- CacheOutput.new(elem)
69
- end
13
+ private
70
14
 
71
- def execute
72
- elem = if options[:collection]
73
- Array.wrap(value).map{ |o| fetch(key(o), o) }
74
- else
75
- fetch
76
- end
77
- wrap(elem)
15
+ def _execute
16
+ strategy = if metadata.is_a?(EasySerializer::Collection)
17
+ Collection
18
+ elsif metadata.serializer?
19
+ Serializer
20
+ else
21
+ Method
22
+ end
23
+ strategy.call(serializer, metadata)
78
24
  end
79
25
  end
80
26
  end
27
+
28
+ require 'easy_serializer/cacher/template'
29
+ require 'easy_serializer/cacher/collection'
30
+ require 'easy_serializer/cacher/method'
31
+ require 'easy_serializer/cacher/serializer'
@@ -0,0 +1,40 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Collection < Template
4
+
5
+ def execute
6
+ collection.map do |elem|
7
+ fetch(key(elem), elem)
8
+ end
9
+ end
10
+
11
+ def collection
12
+ @collection ||= serializer.instance_exec serializer.object, &metadata.get_value
13
+ end
14
+
15
+ def key(elem)
16
+ if metadata_key
17
+ [elem, metadata_key, nested_serializer.name]
18
+ else
19
+ [elem, nested_serializer.name]
20
+ end.flatten
21
+ end
22
+
23
+ def options
24
+ metadata.cache_options || {}
25
+ end
26
+
27
+ def block_to_get_value(elem)
28
+ proc { nested_serializer.call(elem) }
29
+ end
30
+
31
+ def nested_serializer
32
+ metadata.serializer(serializer.object, serializer)
33
+ end
34
+
35
+ def fetch(key, elem)
36
+ EasySerializer.cache.fetch(key, options, &block_to_get_value(elem))
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Method < Template
4
+
5
+ def execute
6
+ fetch
7
+ end
8
+
9
+ def key
10
+ cache_key = if metadata.cache_key
11
+ option_to_value(metadata.cache_key, serializer.object, serializer)
12
+ else
13
+ metadata.name
14
+ end
15
+ [serializer.object, cache_key, serializer.class.name].flatten
16
+ end
17
+
18
+ def options
19
+ metadata.cache_options || {}
20
+ end
21
+
22
+ def block_to_get_value
23
+ proc { serializer.instance_exec serializer.object, &metadata.get_value }
24
+ end
25
+
26
+ def fetch
27
+ EasySerializer.cache.fetch(key, options, &block_to_get_value)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,38 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Serializer < Template
4
+
5
+ def execute
6
+ fetch
7
+ end
8
+
9
+ def key
10
+ if metadata_key
11
+ [value, metadata_key, nested_serializer.name]
12
+ else
13
+ [value, nested_serializer.name]
14
+ end.flatten
15
+ end
16
+
17
+ def options
18
+ metadata.cache_options || {}
19
+ end
20
+
21
+ def block_to_get_value
22
+ proc { metadata.serialize!(value, serializer) }
23
+ end
24
+
25
+ def value
26
+ serializer.instance_exec serializer.object, &metadata.get_value
27
+ end
28
+
29
+ def nested_serializer
30
+ metadata.serializer(serializer.object, serializer)
31
+ end
32
+
33
+ def fetch
34
+ EasySerializer.cache.fetch(key, options, &block_to_get_value)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,26 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Template
4
+ include Helpers
5
+ attr_reader :serializer, :metadata
6
+
7
+ def initialize(serializer, metadata)
8
+ @serializer = serializer
9
+ @metadata = metadata
10
+ end
11
+
12
+ def self.call(*args)
13
+ new(*args).execute
14
+ end
15
+
16
+ private
17
+
18
+ def metadata_key
19
+ return @metadata_key if defined?(@metadata_key)
20
+ @metadata_key = if metadata.cache_key
21
+ option_to_value(metadata.cache_key, serializer.object, serializer)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ module EasySerializer
2
+ class Collection < Field
3
+ attr_reader :_options, :name, :block
4
+ def initialize(name, options, block)
5
+ @name = name
6
+ @_options = options
7
+ @block = block
8
+ end
9
+
10
+ def options
11
+ received_opts.merge(collection: true)
12
+ end
13
+
14
+ def received_opts
15
+ _options || {}
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,51 @@
1
+ module EasySerializer
2
+ Field = Struct.new(:name, :options, :block) do
3
+ include Helpers
4
+
5
+ def get_value
6
+ if block
7
+ block
8
+ else
9
+ method(:send_method)
10
+ end
11
+ end
12
+
13
+ def send_method(obj)
14
+ obj.send(name)
15
+ end
16
+
17
+ def catch?
18
+ options[:cache]
19
+ end
20
+
21
+ def serializer?
22
+ !!options[:serializer]
23
+ end
24
+ alias_method :nested_serializer?, :serializer?
25
+
26
+ def cache_options
27
+ options[:cache_options]
28
+ end
29
+
30
+ def cache_key
31
+ options[:cache_key]
32
+ end
33
+
34
+ def nested_serializer
35
+ @serializer
36
+ end
37
+
38
+ def serializer(object, serializer_instance)
39
+ return unless serializer?
40
+ option_to_value(options[:serializer], object, serializer_instance)
41
+ end
42
+ alias_method :nested_serializer=, :serializer
43
+
44
+ # Important!!! DO NOT memoize this method
45
+ def serialize!(object, serializer_instance)
46
+ serializer = serializer(object, serializer_instance)
47
+ return unless serializer
48
+ serializer.call(object)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ module EasySerializer
2
+ class RootCacher
3
+ include Helpers
4
+
5
+ def self.call(serializer, &block)
6
+ new(serializer, &block).execute
7
+ end
8
+
9
+ attr_reader :serializer, :block
10
+ def initialize(serializer, &block)
11
+ @serializer = serializer
12
+ @block = block
13
+ end
14
+
15
+ def execute
16
+ fetch
17
+ end
18
+
19
+ def object
20
+ serializer.object
21
+ end
22
+
23
+ def options
24
+ serializer.__cache.except(:block, :cache_key, :root_call, :serializer, :key)
25
+ end
26
+
27
+ def key
28
+ custom = serializer.__cache[:key]
29
+ if custom
30
+ option_to_value(custom, object, serializer)
31
+ else
32
+ [object, 'EasySerialized'].flatten
33
+ end
34
+ end
35
+
36
+ def fetch
37
+ EasySerializer.cache.fetch(key, options, &block)
38
+ end
39
+
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module EasySerializer
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artur Pañach
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-13 00:00:00.000000000 Z
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,6 +76,7 @@ executables: []
76
76
  extensions: []
77
77
  extra_rdoc_files: []
78
78
  files:
79
+ - ".coveralls.yml"
79
80
  - ".gitignore"
80
81
  - ".rspec"
81
82
  - ".travis.yml"
@@ -89,9 +90,18 @@ files:
89
90
  - easy_serializer.gemspec
90
91
  - lib/easy_serializer.rb
91
92
  - lib/easy_serializer/attribute.rb
93
+ - lib/easy_serializer/attribute_serializer.rb
92
94
  - lib/easy_serializer/base.rb
95
+ - lib/easy_serializer/cache_output.rb
93
96
  - lib/easy_serializer/cacher.rb
97
+ - lib/easy_serializer/cacher/collection.rb
98
+ - lib/easy_serializer/cacher/method.rb
99
+ - lib/easy_serializer/cacher/serializer.rb
100
+ - lib/easy_serializer/cacher/template.rb
101
+ - lib/easy_serializer/collection.rb
102
+ - lib/easy_serializer/field.rb
94
103
  - lib/easy_serializer/helpers.rb
104
+ - lib/easy_serializer/root_cacher.rb
95
105
  - lib/easy_serializer/version.rb
96
106
  homepage: https://github.com/arturictus/easy_serializer
97
107
  licenses:
@@ -113,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
123
  version: '0'
114
124
  requirements: []
115
125
  rubyforge_project:
116
- rubygems_version: 2.2.3
126
+ rubygems_version: 2.4.5
117
127
  signing_key:
118
128
  specification_version: 4
119
129
  summary: Semantic serializer for making easy serializing objects.