contracted_value 0.1.1 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 761fdc9b4b487bb54d59724fa87a6e2e3ca1665cae0774bc2f7cdcf50d076913
4
- data.tar.gz: c051835f898ce826968eb7616fc414ffeff3677926b48d001904528432354a88
3
+ metadata.gz: 1955c7fa4eaf8ae64db37e57575a6da241315ebd5855d72097e8e175292d0ee3
4
+ data.tar.gz: d34b3b78b78e7e27466468851e96968293e978cadfc40104e3a67425e69eb4a5
5
5
  SHA512:
6
- metadata.gz: a6d714074711c3d1ef3856e15cf2ba4e0035f90c493cdebe485d90aef52990f8b03d0055c0a96d7f34ccbbc1b230e0f905ea7baf8258200e739ec0bdd0b3cb87
7
- data.tar.gz: 7543ae38d5eddb8b0304a7171caec91b4472b66210752c79783b481ee07b32b34924d122db46cf90442ed6127fe4055d862224b3c49b1f0c33b1d07fb53753cc
6
+ metadata.gz: 125f0ff78bdf35d47b2fd7400ebb93db3a249d0b04abe1462394b732ad1d804326d7d89c7b04e0d3ca28cb738bc1f350a5091d2ae559490cfea468b864a1d03d
7
+ data.tar.gz: 184cd1009cbd96af31d5fce7c075c483ce4762fc77936843c66a13df2c43b0aa95e70fe14e5e7c8ddaea1ebaf6a85084fc0345479af1e2a273cab6ca8942f64d
@@ -24,16 +24,16 @@ jobs:
24
24
  os:
25
25
  - ubuntu-latest
26
26
  ruby:
27
- - "2.7"
27
+ - "3.2"
28
28
  gemfile:
29
- - gemfiles/contracts_16_0.gemfile
29
+ - gemfiles/contracts_17_0.gemfile
30
30
  env:
31
31
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
32
32
  COVERALLS: true
33
33
  runs-on: ${{ matrix.os }}
34
34
  steps:
35
35
  - name: Checkout
36
- uses: actions/checkout@v3
36
+ uses: actions/checkout@v4
37
37
 
38
38
  - name: Setup Ruby
39
39
  uses: ruby/setup-ruby@v1
@@ -26,15 +26,12 @@ jobs:
26
26
  ruby:
27
27
  - "3.0"
28
28
  - "3.1"
29
+ - "3.2"
29
30
  gemfile:
30
31
  - gemfiles/contracts_17_0.gemfile
31
32
  allow_failures:
32
33
  - false
33
34
  include:
34
- - os: ubuntu-latest
35
- ruby: "2.7"
36
- gemfile: gemfiles/contracts_16_0.gemfile
37
- allow_failures: false
38
35
  - os: ubuntu-latest
39
36
  ruby: "ruby-head"
40
37
  gemfile: gemfiles/contracts_17_0.gemfile
@@ -46,7 +43,7 @@ jobs:
46
43
  continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
47
44
  steps:
48
45
  - name: Checkout
49
- uses: actions/checkout@v3
46
+ uses: actions/checkout@v4
50
47
  - name: Setup Ruby
51
48
  uses: ruby/setup-ruby@v1
52
49
  with:
data/Appraisals CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise "contracts_16_0" do
4
- gem "contracts", "~> 0.16.0"
3
+ appraise "contracts_17_0" do
4
+ gem "contracts", "~> 0.17.0"
5
5
  end
data/CHANGELOG.md CHANGED
@@ -18,7 +18,16 @@ This project adheres to [Semantic Versioning](http://semver.org/).
18
18
  - Nothing
19
19
 
20
20
 
21
- ## [Unreleased]
21
+ ## [0.1.2]
22
+
23
+ ### Changed
24
+
25
+ - Requires Ruby 3.0, contracts >= 0.17 (Ruby 2.7 EOL)
26
+ - Make code "Object Shape friendly"
27
+ (https://github.com/PikachuEXE/contracted_value/pull/5)
28
+
29
+
30
+ ## [0.1.1]
22
31
 
23
32
  ### Changed
24
33
 
@@ -35,4 +44,5 @@ This project adheres to [Semantic Versioning](http://semver.org/).
35
44
 
36
45
  - Initial release
37
46
 
38
- [Unreleased]: https://github.com/PikachuEXE/contracted_value/compare/v0.1.0...HEAD
47
+ [0.1.2]: https://github.com/PikachuEXE/contracted_value/compare/v0.1.1...v0.1.2
48
+ [0.1.1]: https://github.com/PikachuEXE/contracted_value/compare/v0.1.0...v0.1.1
data/README.md CHANGED
@@ -11,7 +11,7 @@ See details explanation in below sections
11
11
 
12
12
  ## Status
13
13
 
14
- [![GitHub Build Status](https://img.shields.io/github/workflow/status/PikachuEXE/contracted_value/Tests?style=flat-square)](https://github.com/PikachuEXE/contracted_value/actions?query=workflow%3ATests)
14
+ [![GitHub Build Status](https://img.shields.io/github/actions/workflow/status/PikachuEXE/contracted_value/tests.yaml?branch=master&style=flat-square)](https://github.com/PikachuEXE/contracted_value/actions/workflows/tests.yaml)
15
15
 
16
16
  [![Gem Version](http://img.shields.io/gem/v/contracted_value.svg?style=flat-square)](http://badge.fury.io/rb/contracted_value)
17
17
  [![License](https://img.shields.io/github/license/PikachuEXE/contracted_value.svg?style=flat-square)](http://badge.fury.io/rb/contracted_value)
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
12
12
  s.platform = Gem::Platform::RUBY
13
13
  s.name = gem_name
14
14
  s.version = ContractedValue::VERSION
15
- s.summary = "Some Tweaks for ActiveRecord"
15
+ s.summary = "Contracted immutable(by default) value objects"
16
16
  s.description = <<-DOC
17
- ActiveRecord is great, but could be better. Here are some tweaks for it.
17
+ Library for creating contracted immutable(by default) value objects supported by contracts.ruby & ice_nine
18
18
  DOC
19
19
 
20
20
  s.license = "MIT"
@@ -28,14 +28,14 @@ Gem::Specification.new do |s|
28
28
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
29
29
  s.require_paths = ["lib"]
30
30
 
31
- s.add_dependency "contracts", "~> 0.15"
31
+ s.add_dependency "contracts", "~> 0.17"
32
32
  s.add_dependency "ice_nine"
33
33
 
34
34
  s.add_development_dependency "bundler", ">= 1.0.0"
35
35
  s.add_development_dependency "rake", ">= 10.0", "<= 14.0"
36
36
  s.add_development_dependency "pry"
37
37
 
38
- s.add_development_dependency "appraisal", "~> 2.0"
38
+ s.add_development_dependency "appraisal", "~> 2.0", ">= 2.5.0"
39
39
 
40
40
  s.add_development_dependency "rspec", "~> 3.0"
41
41
  s.add_development_dependency "rspec-its", "~> 1.0"
@@ -49,7 +49,7 @@ Gem::Specification.new do |s|
49
49
 
50
50
  s.add_development_dependency "rubocop", ">= 0.70"
51
51
 
52
- s.required_ruby_version = ">= 2.7.0"
52
+ s.required_ruby_version = ">= 3.0.0"
53
53
 
54
54
  s.required_rubygems_version = ">= 1.4.0"
55
55
  end
@@ -182,10 +182,17 @@ module ContractedValue
182
182
  attr_reader :default_value
183
183
 
184
184
  def raise_error_if_inputs_invalid
185
+ raise_error_if_name_invalid
185
186
  raise_error_if_refrigeration_mode_invalid
186
187
  raise_error_if_default_value_invalid
187
188
  end
188
189
 
190
+ def raise_error_if_name_invalid
191
+ return if name.is_a?(Symbol)
192
+
193
+ raise NotImplementedError, "Internal error: name is not a symbol (#{name.class.name})"
194
+ end
195
+
189
196
  def raise_error_if_refrigeration_mode_invalid
190
197
  return if RefrigerationMode::Enum.all.include?(refrigeration_mode)
191
198
 
@@ -231,6 +238,8 @@ module ContractedValue
231
238
  )
232
239
  end
233
240
 
241
+ @attr_values = {}
242
+
234
243
  self.class.send(:attribute_set).each_attribute do |attribute|
235
244
  attr_value = attribute.extract_value(input_attr_values_hash)
236
245
 
@@ -253,8 +262,8 @@ module ContractedValue
253
262
 
254
263
  # Using symbol since attribute names are limited in number
255
264
  # An alternative would be using frozen string
256
- instance_variable_set(
257
- :"@#{attribute.name}",
265
+ @attr_values.store(
266
+ attribute.name.to_sym,
258
267
  sometimes_frozen_attr_value,
259
268
  )
260
269
  end
@@ -265,10 +274,7 @@ module ContractedValue
265
274
  # rubocop:enable Metrics/CyclomaticComplexity
266
275
 
267
276
  def to_h
268
- self.class.send(:attribute_set).
269
- each_attribute.each_with_object({}) do |attribute, hash|
270
- hash[attribute.name] = instance_variable_get(:"@#{attribute.name}")
271
- end
277
+ @attr_values.clone
272
278
  end
273
279
 
274
280
  # == Class interface == #
@@ -288,16 +294,19 @@ module ContractedValue
288
294
  refrigeration_mode: RefrigerationMode::Enum::DEEP,
289
295
  default_value: Private::ATTR_DEFAULT_VALUE_ABSENT_VAL
290
296
  )
297
+ # Using symbol since attribute names are limited in number
298
+ # An alternative would be using frozen string
299
+ name_in_sym = name.to_sym
291
300
 
292
301
  attr = Attribute.new(
293
- name: name,
302
+ name: name_in_sym,
294
303
  contract: contract,
295
304
  refrigeration_mode: refrigeration_mode,
296
305
  default_value: default_value,
297
306
  )
298
307
  @attribute_set = @attribute_set.add(attr)
299
308
 
300
- attr_reader(name)
309
+ define_method(name_in_sym) { @attr_values[name_in_sym] }
301
310
  end
302
311
 
303
312
  # @api private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContractedValue
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
@@ -10,40 +10,50 @@ require "spec_helper"
10
10
  end
11
11
 
12
12
  example "does not raise error when NOT declaring any attribute" do
13
- expect(->{ value_class }).to_not raise_error
13
+ expect { value_class }.to_not raise_error
14
14
  end
15
15
 
16
16
  example "does not raise error when declaring 1 attribute" do
17
- expect(
18
- ->{
19
- value_class.class_eval do
20
- attribute(:attribute_1)
21
- end
22
- },
23
- ).to_not raise_error
17
+ expect {
18
+ value_class.class_eval do
19
+ attribute(:attribute_1)
20
+ end
21
+ }.to_not raise_error
24
22
  end
25
23
 
26
24
  example "does not raise error when declaring N attributes with different names" do
27
- expect(
28
- ->{
29
- value_class.class_eval do
30
- attribute(:attribute_1)
31
- attribute(:attribute_2)
32
- end
33
- },
34
- ).to_not raise_error
25
+ expect {
26
+ value_class.class_eval do
27
+ attribute(:attribute_1)
28
+ attribute(:attribute_2)
29
+ end
30
+ }.to_not raise_error
35
31
  end
36
32
 
37
33
  example "does raise error when declaring N attributes with the same name" do
38
- expect(
39
- ->{
40
- value_class.class_eval do
41
- attribute(:attribute_1)
42
- attribute(:attribute_2)
43
- attribute(:attribute_1)
44
- end
45
- },
46
- ).to raise_error(::ContractedValue::Errors::DuplicateAttributeDeclaration)
34
+ expect {
35
+ value_class.class_eval do
36
+ attribute(:attribute_1)
37
+ attribute(:attribute_2)
38
+ attribute(:attribute_1)
39
+ end
40
+ }.to raise_error(::ContractedValue::Errors::DuplicateAttributeDeclaration)
41
+ end
42
+
43
+ example "does not raise error when declaring 1 attribute with string name" do
44
+ expect {
45
+ value_class.class_eval do
46
+ attribute("attribute_1")
47
+ end
48
+ }.to_not raise_error
49
+ end
50
+
51
+ example "does not raise error when declaring 1 attribute with number name" do
52
+ expect {
53
+ value_class.class_eval do
54
+ attribute(1)
55
+ end
56
+ }.to raise_error(::NoMethodError, /undefined method `to_sym'/)
47
57
  end
48
58
  end
49
59
 
@@ -79,39 +89,39 @@ require "spec_helper"
79
89
 
80
90
  it "does raise error when input is not a hash" do
81
91
  aggregate_failures do
82
- expect(
83
- ->{
84
- value_class.new(
85
- non_hash,
86
- )
87
- },
88
- ).to raise_error(::ContractedValue::Errors::InvalidInputType)
92
+ expect {
93
+ value_class.new(
94
+ non_hash,
95
+ )
96
+ }.to raise_error(::ContractedValue::Errors::InvalidInputType)
89
97
  end
90
98
  end
91
99
 
92
100
  it "does not raise error when input is a hash" do
93
101
  aggregate_failures do
94
- expect(
95
- ->{
96
- value_class.new(
97
- default_inputs,
98
- )
99
- },
100
- ).to_not raise_error
102
+ expect {
103
+ value_class.new(
104
+ default_inputs,
105
+ )
106
+ }.to_not raise_error
101
107
  end
102
108
  end
103
109
 
104
110
  it "does not raise error when input is a value" do
105
111
  aggregate_failures do
106
- expect(
107
- ->{
112
+ new_val = nil
113
+ expect {
114
+ new_val = value_class.new(
108
115
  value_class.new(
109
- value_class.new(
110
- default_inputs,
111
- ),
112
- )
113
- },
114
- ).to_not raise_error
116
+ default_inputs,
117
+ ),
118
+ )
119
+ }.to_not raise_error
120
+ if new_val
121
+ default_inputs.each_pair do |attr_name, attr_val|
122
+ expect(new_val.public_send(attr_name)).to eq(attr_val)
123
+ end
124
+ end
115
125
  end
116
126
  end
117
127
 
@@ -121,13 +131,11 @@ require "spec_helper"
121
131
  :attribute_1,
122
132
  :attribute_2,
123
133
  ].each do |attr_name|
124
- expect(
125
- ->{
126
- value_class.new(
127
- default_inputs.dup.tap{|h| h.delete(attr_name)},
128
- )
129
- },
130
- ).to raise_error(::ContractedValue::Errors::MissingAttributeInput)
134
+ expect {
135
+ value_class.new(
136
+ default_inputs.dup.tap{|h| h.delete(attr_name)},
137
+ )
138
+ }.to raise_error(::ContractedValue::Errors::MissingAttributeInput)
131
139
  end
132
140
  end
133
141
  end
@@ -138,15 +146,13 @@ require "spec_helper"
138
146
  :attribute_1,
139
147
  :attribute_2,
140
148
  ].each do |attr_name|
141
- expect(
142
- ->{
143
- value_class.new(
144
- default_inputs.each_with_object({}) do |(k, _v), h|
145
- h[k] = nil
146
- end
147
- )
148
- },
149
- ).to_not raise_error
149
+ expect {
150
+ value_class.new(
151
+ default_inputs.each_with_object({}) do |(k, _v), h|
152
+ h[k] = nil
153
+ end
154
+ )
155
+ }.to_not raise_error
150
156
  end
151
157
  end
152
158
  end
@@ -175,36 +181,30 @@ require "spec_helper"
175
181
 
176
182
 
177
183
  it "does not raise error when all values are valid according to contracts" do
178
- expect(
179
- ->{
180
- value_class.new(
181
- default_inputs
182
- )
183
- },
184
- ).to_not raise_error
184
+ expect {
185
+ value_class.new(
186
+ default_inputs
187
+ )
188
+ }.to_not raise_error
185
189
  end
186
190
 
187
191
  it "does raise error when any value is invalid according to contracts" do
188
192
  aggregate_failures do
189
- expect(
190
- ->{
191
- value_class.new(
192
- default_inputs.merge(
193
- attribute_with_contract_1: "",
194
- ),
195
- )
196
- },
197
- ).to raise_error(::ContractedValue::Errors::InvalidAttributeValue)
193
+ expect {
194
+ value_class.new(
195
+ default_inputs.merge(
196
+ attribute_with_contract_1: "",
197
+ ),
198
+ )
199
+ }.to raise_error(::ContractedValue::Errors::InvalidAttributeValue)
198
200
 
199
- expect(
200
- ->{
201
- value_class.new(
202
- default_inputs.merge(
203
- attribute_with_contract_2: 0,
204
- ),
205
- )
206
- },
207
- ).to raise_error(::ContractedValue::Errors::InvalidAttributeValue)
201
+ expect {
202
+ value_class.new(
203
+ default_inputs.merge(
204
+ attribute_with_contract_2: 0,
205
+ ),
206
+ )
207
+ }.to raise_error(::ContractedValue::Errors::InvalidAttributeValue)
208
208
  end
209
209
  end
210
210
  end
@@ -237,22 +237,18 @@ require "spec_helper"
237
237
  # Create it just before expectation
238
238
  value_object
239
239
 
240
- expect(
241
- ->{
242
- hash_as_input[:a] = nil
243
- },
244
- ).to raise_error(::RuntimeError, /can't modify frozen/)
240
+ expect {
241
+ hash_as_input[:a] = nil
242
+ }.to raise_error(::RuntimeError, /can't modify frozen/)
245
243
  end
246
244
 
247
245
  it "does deeply freeze the inputs" do
248
246
  # Create it just before expectation
249
247
  value_object
250
248
 
251
- expect(
252
- ->{
253
- hash_as_deep_nested_content[:a] = nil
254
- },
255
- ).to raise_error(::RuntimeError, /can't modify frozen/)
249
+ expect {
250
+ hash_as_deep_nested_content[:a] = nil
251
+ }.to raise_error(::RuntimeError, /can't modify frozen/)
256
252
  end
257
253
  end
258
254
 
@@ -265,22 +261,18 @@ require "spec_helper"
265
261
  # Create it just before expectation
266
262
  value_object
267
263
 
268
- expect(
269
- ->{
270
- hash_as_input[:a] = nil
271
- },
272
- ).to raise_error(::RuntimeError, /can't modify frozen/)
264
+ expect {
265
+ hash_as_input[:a] = nil
266
+ }.to raise_error(::RuntimeError, /can't modify frozen/)
273
267
  end
274
268
 
275
269
  it "does not deeply freeze the inputs" do
276
270
  # Create it just before expectation
277
271
  value_object
278
272
 
279
- expect(
280
- ->{
281
- hash_as_deep_nested_content[:a] = nil
282
- },
283
- ).to_not raise_error
273
+ expect {
274
+ hash_as_deep_nested_content[:a] = nil
275
+ }.to_not raise_error
284
276
  end
285
277
  end
286
278
 
@@ -293,22 +285,18 @@ require "spec_helper"
293
285
  # Create it just before expectation
294
286
  value_object
295
287
 
296
- expect(
297
- ->{
298
- hash_as_input[:a] = nil
299
- },
300
- ).to_not raise_error
288
+ expect {
289
+ hash_as_input[:a] = nil
290
+ }.to_not raise_error
301
291
  end
302
292
 
303
293
  it "does not deeply freeze the inputs" do
304
294
  # Create it just before expectation
305
295
  value_object
306
296
 
307
- expect(
308
- ->{
309
- hash_as_deep_nested_content[:a] = nil
310
- },
311
- ).to_not raise_error
297
+ expect {
298
+ hash_as_deep_nested_content[:a] = nil
299
+ }.to_not raise_error
312
300
  end
313
301
  end
314
302
 
@@ -533,11 +521,9 @@ require "spec_helper"
533
521
  end
534
522
 
535
523
  example "does not raise error" do
536
- expect(
537
- ->{
538
- child_value_class.new(attribute_1: "wut")
539
- },
540
- ).to_not raise_error
524
+ expect {
525
+ child_value_class.new(attribute_1: "wut")
526
+ }.to_not raise_error
541
527
  end
542
528
 
543
529
  end
@@ -559,36 +545,30 @@ require "spec_helper"
559
545
  end
560
546
 
561
547
  example "does not raise error when declaring 1 new attribute" do
562
- expect(
563
- ->{
564
- child_value_class.class_eval do
565
- attribute(:attribute_3)
566
- end
567
- },
568
- ).to_not raise_error
548
+ expect {
549
+ child_value_class.class_eval do
550
+ attribute(:attribute_3)
551
+ end
552
+ }.to_not raise_error
569
553
  end
570
554
 
571
555
  example "does not raise error when declaring N attributes with different names" do
572
- expect(
573
- ->{
574
- child_value_class.class_eval do
575
- attribute(:attribute_3)
576
- attribute(:attribute_4)
577
- end
578
- },
579
- ).to_not raise_error
556
+ expect {
557
+ child_value_class.class_eval do
558
+ attribute(:attribute_3)
559
+ attribute(:attribute_4)
560
+ end
561
+ }.to_not raise_error
580
562
  end
581
563
 
582
564
  example "does raise error when declaring N attributes with the same name" do
583
- expect(
584
- ->{
585
- child_value_class.class_eval do
586
- attribute(:attribute_3)
587
- attribute(:attribute_4)
588
- attribute(:attribute_3)
589
- end
590
- },
591
- ).to raise_error(::ContractedValue::Errors::DuplicateAttributeDeclaration)
565
+ expect {
566
+ child_value_class.class_eval do
567
+ attribute(:attribute_3)
568
+ attribute(:attribute_4)
569
+ attribute(:attribute_3)
570
+ end
571
+ }.to raise_error(::ContractedValue::Errors::DuplicateAttributeDeclaration)
592
572
  end
593
573
 
594
574
  end
@@ -632,31 +612,27 @@ require "spec_helper"
632
612
  end
633
613
 
634
614
  example "does not raise error when declaring existing attribute with different contract" do
635
- expect(
636
- ->{
637
- child_value_class.class_eval do
638
- attribute(
639
- :attribute_1,
640
- contract: ::Contracts::Builtin::NatPos
641
- )
642
- end
643
- child_value_class.new(attribute_1: "")
644
- },
645
- ).to raise_error(::ContractedValue::Errors::InvalidAttributeValue)
615
+ expect {
616
+ child_value_class.class_eval do
617
+ attribute(
618
+ :attribute_1,
619
+ contract: ::Contracts::Builtin::NatPos
620
+ )
621
+ end
622
+ child_value_class.new(attribute_1: "")
623
+ }.to raise_error(::ContractedValue::Errors::InvalidAttributeValue)
646
624
  end
647
625
 
648
626
  example "does not raise error when declaring existing attribute with different default_value" do
649
- expect(
650
- ->{
651
- child_value_class.class_eval do
652
- attribute(
653
- :attribute_1,
654
- default_value: nil,
655
- )
656
- end
657
- child_value_class.new
658
- },
659
- ).to_not raise_error
627
+ expect {
628
+ child_value_class.class_eval do
629
+ attribute(
630
+ :attribute_1,
631
+ default_value: nil,
632
+ )
633
+ end
634
+ child_value_class.new
635
+ }.to_not raise_error
660
636
  end
661
637
 
662
638
  example "does not raise error when declaring existing attribute with different refrigeration_mode" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contracted_value
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - PikachuEXE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-07 00:00:00.000000000 Z
11
+ date: 2023-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: contracts
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.15'
19
+ version: '0.17'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.15'
26
+ version: '0.17'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ice_nine
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +93,9 @@ dependencies:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
95
  version: '2.0'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 2.5.0
96
99
  type: :development
97
100
  prerelease: false
98
101
  version_requirements: !ruby/object:Gem::Requirement
@@ -100,6 +103,9 @@ dependencies:
100
103
  - - "~>"
101
104
  - !ruby/object:Gem::Version
102
105
  version: '2.0'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 2.5.0
103
109
  - !ruby/object:Gem::Dependency
104
110
  name: rspec
105
111
  requirement: !ruby/object:Gem::Requirement
@@ -198,8 +204,8 @@ dependencies:
198
204
  - - ">="
199
205
  - !ruby/object:Gem::Version
200
206
  version: '0.70'
201
- description: " ActiveRecord is great, but could be better. Here are some tweaks
202
- for it.\n"
207
+ description: " Library for creating contracted immutable(by default) value objects
208
+ supported by contracts.ruby & ice_nine\n"
203
209
  email:
204
210
  - pikachuexe@gmail.com
205
211
  executables: []
@@ -222,7 +228,6 @@ files:
222
228
  - README.md
223
229
  - Rakefile
224
230
  - contracted_value.gemspec
225
- - gemfiles/contracts_16_0.gemfile
226
231
  - gemfiles/contracts_17_0.gemfile
227
232
  - lib/contracted_value.rb
228
233
  - lib/contracted_value/core.rb
@@ -242,17 +247,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
242
247
  requirements:
243
248
  - - ">="
244
249
  - !ruby/object:Gem::Version
245
- version: 2.7.0
250
+ version: 3.0.0
246
251
  required_rubygems_version: !ruby/object:Gem::Requirement
247
252
  requirements:
248
253
  - - ">="
249
254
  - !ruby/object:Gem::Version
250
255
  version: 1.4.0
251
256
  requirements: []
252
- rubygems_version: 3.3.21
257
+ rubygems_version: 3.4.20
253
258
  signing_key:
254
259
  specification_version: 4
255
- summary: Some Tweaks for ActiveRecord
260
+ summary: Contracted immutable(by default) value objects
256
261
  test_files:
257
262
  - spec/contracted_value/value_spec.rb
258
263
  - spec/contracted_value_spec.rb
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "contracts", "~> 0.16.0"
6
-
7
- gemspec path: "../"