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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42b6d9d9132f8b835b675e81e2b0db4f7671fb72
4
- data.tar.gz: 4d2d416595294a9f8f9e7877d0bb333d20e1463c
3
+ metadata.gz: f2f9be8e3117453df3c5f6c5c4000c6c71d285af
4
+ data.tar.gz: 50f072ed9d80684e60cb3be67b8798796ed5267e
5
5
  SHA512:
6
- metadata.gz: f3affef47f0c8dffd5bcd95a43d809cad170047fe962712541a599df12b59bea72c2ea6eea9ee52bfb783873d7f880a53047450b16d6e423d2dd4ef5bd26e85e
7
- data.tar.gz: 8e61d2ea6136e356df1989a612584ece23d08ff5a0ee0707bd94d69cb697409b86b884b991210711b657f57678da9a9df602af58237e0efa968b43f49ff70e0c
6
+ metadata.gz: 19d41169d0bf90bde1e211be3171fcd6b65092a1d0210f2df3a7ac39960aafec3aaf3ded27220879c1b8fe4e6322b4af34332c2cf1a4f9a1d50ff4963a1d5c37
7
+ data.tar.gz: ef9d5b8f2bf28d74fbc6d039d663236616aeb157463dc3aa65f3c2ff06eeddfac57dfce422521774de5cb0929dab0ff264a2ce8c6b43f6b236a4414f54d443ce
@@ -2,3 +2,6 @@ language: ruby
2
2
  rvm:
3
3
  - 2.3.0
4
4
  before_install: gem install bundler -v 1.11.2
5
+
6
+ script:
7
+ - CODECLIMATE_REPO_TOKEN=8577d79977549811ba29d131a3b4573282267712fd72168c5c06d38fc99649cd bundle exec rspec
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/github/dao-rb/dao-entity/badges/coverage.svg)](https://codeclimate.com/github/dao-rb/dao-entity/coverage)
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
-
@@ -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
@@ -3,6 +3,7 @@ require 'virtus'
3
3
  require 'active_support/all'
4
4
  require 'active_model/attribute_methods'
5
5
  require 'active_model/dirty'
6
+ require 'dao/entity/dirty'
6
7
  require 'dao/entity/state'
7
8
  require 'dao/entity/base'
8
9
 
@@ -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
- private
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
@@ -6,7 +6,7 @@ module Dao
6
6
  def self.build_with_attrs(attrs)
7
7
  state = Class.new(self)
8
8
 
9
- state.define_attribute_methods *attrs
9
+ state.define_attribute_methods(*attrs)
10
10
 
11
11
  state.send(:attr_accessor, *attrs)
12
12
  attrs.each do |attr|
@@ -1,5 +1,5 @@
1
1
  module Dao
2
2
  module Entity
3
- VERSION = '1.0.0'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
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.0.0
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-06-28 00:00:00.000000000 Z
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