dao-entity 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/README.md +2 -2
- data/dao-entity.gemspec +4 -0
- data/lib/dao/entity.rb +1 -0
- data/lib/dao/entity/base.rb +5 -10
- data/lib/dao/entity/dirty.rb +60 -0
- data/lib/dao/entity/state.rb +1 -1
- data/lib/dao/entity/version.rb +1 -1
- metadata +59 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2f9be8e3117453df3c5f6c5c4000c6c71d285af
|
4
|
+
data.tar.gz: 50f072ed9d80684e60cb3be67b8798796ed5267e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19d41169d0bf90bde1e211be3171fcd6b65092a1d0210f2df3a7ac39960aafec3aaf3ded27220879c1b8fe4e6322b4af34332c2cf1a4f9a1d50ff4963a1d5c37
|
7
|
+
data.tar.gz: ef9d5b8f2bf28d74fbc6d039d663236616aeb157463dc3aa65f3c2ff06eeddfac57dfce422521774de5cb0929dab0ff264a2ce8c6b43f6b236a4414f54d443ce
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# Dao::Entity
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/dao-entity.svg)](https://badge.fury.io/rb/dao-entity)
|
3
4
|
[![Build Status](https://travis-ci.org/dao-rb/dao-entity.svg?branch=master)](https://travis-ci.org/dao-rb/dao-entity)
|
4
5
|
[![Code Climate](https://codeclimate.com/github/dao-rb/dao-entity/badges/gpa.svg)](https://codeclimate.com/github/dao-rb/dao-entity)
|
5
|
-
[![Test Coverage](https://codeclimate.com/
|
6
|
+
[![Test Coverage](https://codeclimate.com/repos/5772c7700d9c6e0067002c74/badges/2376d7e0731cb6672a41/coverage.svg)](https://codeclimate.com/repos/5772c7700d9c6e0067002c74/coverage)
|
6
7
|
|
7
8
|
## Installation
|
8
9
|
|
@@ -61,4 +62,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/dao-rb
|
|
61
62
|
## License
|
62
63
|
|
63
64
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
64
|
-
|
data/dao-entity.gemspec
CHANGED
@@ -28,4 +28,8 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency 'rake', '~> 10.0'
|
29
29
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
30
30
|
spec.add_development_dependency 'rspec-its'
|
31
|
+
spec.add_development_dependency 'codeclimate-test-reporter'
|
32
|
+
spec.add_development_dependency 'pry'
|
33
|
+
spec.add_development_dependency 'byebug'
|
34
|
+
spec.add_development_dependency 'pry-byebug'
|
31
35
|
end
|
data/lib/dao/entity.rb
CHANGED
data/lib/dao/entity/base.rb
CHANGED
@@ -7,8 +7,11 @@ module Dao
|
|
7
7
|
|
8
8
|
def initialize(attrs = {})
|
9
9
|
super
|
10
|
+
after_initialize
|
11
|
+
end
|
12
|
+
|
13
|
+
def after_initialize
|
10
14
|
@initialized_with = []
|
11
|
-
@entity_state = self.class.state_class.new(attributes)
|
12
15
|
end
|
13
16
|
|
14
17
|
def initialized_with=(attrs)
|
@@ -19,10 +22,6 @@ module Dao
|
|
19
22
|
id.present? if respond_to?(:id)
|
20
23
|
end
|
21
24
|
|
22
|
-
def entity_state
|
23
|
-
@entity_state.tap { |s| s.assign_attributes(attributes) }
|
24
|
-
end
|
25
|
-
|
26
25
|
def to_key
|
27
26
|
key = respond_to?(:id) && id
|
28
27
|
key ? [key] : nil
|
@@ -43,11 +42,7 @@ module Dao
|
|
43
42
|
alias eql? ==
|
44
43
|
alias equal? eql?
|
45
44
|
|
46
|
-
|
47
|
-
|
48
|
-
def self.state_class
|
49
|
-
@state_class ||= State.build_with_attrs(attribute_set.collect(&:name))
|
50
|
-
end
|
45
|
+
protected
|
51
46
|
|
52
47
|
def identity
|
53
48
|
if respond_to?(:id)
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Dao
|
2
|
+
module Entity
|
3
|
+
module Dirty
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
def after_initialize
|
7
|
+
super
|
8
|
+
initialize_entity_state
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize_entity_state
|
12
|
+
@in_dump_mode = false
|
13
|
+
@entity_state = self.class.state_class.new(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def entity_state
|
17
|
+
@entity_state.tap { |s| s.assign_attributes(attributes) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def _dump(_level)
|
21
|
+
prepare_for_dump do
|
22
|
+
Marshal.dump(self)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class_methods do
|
27
|
+
def _load(marshal_string)
|
28
|
+
Marshal.load(marshal_string).tap(&:initialize_entity_state)
|
29
|
+
end
|
30
|
+
|
31
|
+
def state_class
|
32
|
+
@_state_class ||= State.build_with_attrs(attribute_set.collect(&:name))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def respond_to?(*args)
|
37
|
+
if args.first == :_dump
|
38
|
+
not @in_dump_mode
|
39
|
+
else
|
40
|
+
super
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
protected
|
45
|
+
|
46
|
+
def prepare_for_dump
|
47
|
+
current_entity_state = @entity_state
|
48
|
+
@entity_state = nil
|
49
|
+
@in_dump_mode = true
|
50
|
+
|
51
|
+
result = yield
|
52
|
+
|
53
|
+
@entity_state = current_entity_state
|
54
|
+
@in_dump_mode = false
|
55
|
+
|
56
|
+
result
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/dao/entity/state.rb
CHANGED
data/lib/dao/entity/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dao-entity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- llxff
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-08-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: virtus
|
@@ -109,6 +109,62 @@ dependencies:
|
|
109
109
|
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: codeclimate-test-reporter
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: pry
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: byebug
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: pry-byebug
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
type: :development
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
112
168
|
description: Base entity
|
113
169
|
email:
|
114
170
|
- ll.wg.bin@gmail.com
|
@@ -128,6 +184,7 @@ files:
|
|
128
184
|
- dao-entity.gemspec
|
129
185
|
- lib/dao/entity.rb
|
130
186
|
- lib/dao/entity/base.rb
|
187
|
+
- lib/dao/entity/dirty.rb
|
131
188
|
- lib/dao/entity/state.rb
|
132
189
|
- lib/dao/entity/version.rb
|
133
190
|
homepage: https://github.com/dao-rb/dao-entity
|