contracted_value 0.1.1 → 0.1.2

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
  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: "../"