virtus_model 0.2.9 → 0.3.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +83 -3
  3. data/lib/virtus_model/version.rb +1 -1
  4. metadata +32 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0cb3157871c8866d19ac88f068076329ee5d9c5
4
- data.tar.gz: 68f6a26a49f767e902e335b30ef43a4cf5ef01e8
3
+ metadata.gz: 4889888392103490330641562a43bbc90466a8c4
4
+ data.tar.gz: 13c865c370ea09c3e0a4857bd6b82ab511191f1c
5
5
  SHA512:
6
- metadata.gz: d74acfb486d3792660e01ee32423c95c7c10837c775d35e41183325c47b64a637ed712502771cad02c56ba7e6d9c48ec12c49a1d2705071d7d139ef32654cd39
7
- data.tar.gz: 3ec66545f02ad0aba4a926d6748880a8a3e2ae9221ea0d5c466369574c58e332f89768578ce72ef25c932cd9838a5e67c75c3f3077999d7a0a6c1f25b3938be3
6
+ metadata.gz: 295d96a01e5a71b31db621c6a5de0a1b4a9ac47848d20eced14d6fdf197f5aabcbeaa4b19314b150410b6f04e519505601eb3ad24f62cc1dc83e31fdc65d504a
7
+ data.tar.gz: e1fb74537b824ebb7cb722694970a357aa707ca0ed011275c0bb9b7eba49cf1d48070e0a2160da5969f403a66f26719e5e68840bf7697de6ce2c7373100db90e
data/README.md CHANGED
@@ -1,7 +1,87 @@
1
- # VirtusModel [![Build Status](https://travis-ci.org/derek-schaefer/virtus_model.svg)](https://travis-ci.org/derek-schaefer/virtus_model)
1
+ # VirtusModel
2
2
 
3
3
  A practical and pleasant union of [Virtus](https://rubygems.org/gems/virtus) and [ActiveModel](https://rubygems.org/gems/activemodel).
4
4
 
5
- # License
5
+ ## Installation
6
6
 
7
- MIT
7
+ Ruby version 2.2.2 or greater is required.
8
+
9
+ ```shell
10
+ $ gem install virtus_model
11
+ ```
12
+
13
+ ## Examples
14
+
15
+ First, familiarize yourself with the Virtus and ActiveModel libraries.
16
+
17
+ ```ruby
18
+ #
19
+ # Class definitions
20
+ #
21
+
22
+ class ModelOne < VirtusModel::Base
23
+ attribute :name, String
24
+
25
+ validates :name, presence: true
26
+ end
27
+
28
+ class ModelTwo < VirtusModel::Base
29
+ attribute :models, Array[ModelOne]
30
+
31
+ validates :models, presence: true
32
+ end
33
+
34
+ #
35
+ # Class methods
36
+ #
37
+
38
+ raise unless ModelOne.attributes == [:name]
39
+
40
+ raise unless ModelOne.attribute?(:name)
41
+
42
+ raise if ModelOne.attribute?(:other)
43
+
44
+ raise unless ModelTwo.associations == [:models]
45
+
46
+ raise unless ModelTwo.association?(:models)
47
+
48
+ raise if ModelTwo.association?(:other)
49
+
50
+ #
51
+ # Instance methods
52
+ #
53
+
54
+ model1 = ModelOne.new(name: 'hello')
55
+
56
+ raise unless model1.attributes == { name: 'hello' }
57
+
58
+ raise unless model1.valid?
59
+
60
+ model1.assign_attributes(name: nil)
61
+
62
+ raise if model1.valid?
63
+
64
+ raise unless model1.errors[:name] == ["can't be blank"]
65
+
66
+ raise unless model1.update(name: 'hello')
67
+
68
+ model2 = ModelTwo.new(models: [model1.attributes])
69
+
70
+ raise unless model2.valid?
71
+
72
+ model2.assign_attributes(models: [])
73
+
74
+ raise if model2.valid?
75
+
76
+ raise unless model2.errors[:models] == ["can't be blank"]
77
+
78
+ raise if model2.update(models: [{ name: nil }])
79
+
80
+ raise unless model2.errors[:'models[0][name]'] == ["can't be blank"]
81
+
82
+ raise unless model2.update(models: [model1])
83
+
84
+ raise unless model2.export == { models: [{ name: 'hello' }] }
85
+
86
+ raise unless ModelTwo.new(model2.export) == model2
87
+ ```
@@ -1,3 +1,3 @@
1
1
  module VirtusModel
2
- VERSION = '0.2.9'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virtus_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Schaefer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-10 00:00:00.000000000 Z
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -28,44 +28,56 @@ dependencies:
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.2'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '6'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '4.2'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '6'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: activesupport
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - "~>"
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
53
  version: '4.2'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '6'
48
57
  type: :runtime
49
58
  prerelease: false
50
59
  version_requirements: !ruby/object:Gem::Requirement
51
60
  requirements:
52
- - - "~>"
61
+ - - ">="
53
62
  - !ruby/object:Gem::Version
54
63
  version: '4.2'
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '6'
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: rake
57
69
  requirement: !ruby/object:Gem::Requirement
58
70
  requirements:
59
71
  - - "~>"
60
72
  - !ruby/object:Gem::Version
61
- version: '11.1'
73
+ version: '13.0'
62
74
  type: :development
63
75
  prerelease: false
64
76
  version_requirements: !ruby/object:Gem::Requirement
65
77
  requirements:
66
78
  - - "~>"
67
79
  - !ruby/object:Gem::Version
68
- version: '11.1'
80
+ version: '13.0'
69
81
  - !ruby/object:Gem::Dependency
70
82
  name: rdoc
71
83
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +98,28 @@ dependencies:
86
98
  requirements:
87
99
  - - "~>"
88
100
  - !ruby/object:Gem::Version
89
- version: '3.4'
101
+ version: '3.10'
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
93
105
  requirements:
94
106
  - - "~>"
95
107
  - !ruby/object:Gem::Version
96
- version: '3.4'
108
+ version: '3.10'
97
109
  - !ruby/object:Gem::Dependency
98
110
  name: shoulda-matchers
99
111
  requirement: !ruby/object:Gem::Requirement
100
112
  requirements:
101
113
  - - "~>"
102
114
  - !ruby/object:Gem::Version
103
- version: '3.1'
115
+ version: '4.0'
104
116
  type: :development
105
117
  prerelease: false
106
118
  version_requirements: !ruby/object:Gem::Requirement
107
119
  requirements:
108
120
  - - "~>"
109
121
  - !ruby/object:Gem::Version
110
- version: '3.1'
122
+ version: '4.0'
111
123
  - !ruby/object:Gem::Dependency
112
124
  name: shoulda-callback-matchers
113
125
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +140,14 @@ dependencies:
128
140
  requirements:
129
141
  - - "~>"
130
142
  - !ruby/object:Gem::Version
131
- version: '0.11'
143
+ version: '0.17'
132
144
  type: :development
133
145
  prerelease: false
134
146
  version_requirements: !ruby/object:Gem::Requirement
135
147
  requirements:
136
148
  - - "~>"
137
149
  - !ruby/object:Gem::Version
138
- version: '0.11'
150
+ version: '0.17'
139
151
  description: A practical and pleasant union of Virtus and ActiveModel.
140
152
  email:
141
153
  - derek.schaefer@gmail.com
@@ -153,7 +165,7 @@ homepage: https://github.com/derek-schaefer/virtus_model
153
165
  licenses:
154
166
  - MIT
155
167
  metadata: {}
156
- post_install_message:
168
+ post_install_message:
157
169
  rdoc_options: []
158
170
  require_paths:
159
171
  - lib
@@ -161,16 +173,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
173
  requirements:
162
174
  - - ">="
163
175
  - !ruby/object:Gem::Version
164
- version: 2.0.0
176
+ version: 2.2.2
165
177
  required_rubygems_version: !ruby/object:Gem::Requirement
166
178
  requirements:
167
179
  - - ">="
168
180
  - !ruby/object:Gem::Version
169
181
  version: '0'
170
182
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.6.13
173
- signing_key:
183
+ rubyforge_project:
184
+ rubygems_version: 2.5.2.3
185
+ signing_key:
174
186
  specification_version: 4
175
187
  summary: VirtusModel = Virtus + ActiveModel
176
188
  test_files: