dry-struct 1.2.0 → 1.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -61
  3. data/LICENSE +1 -1
  4. data/README.md +16 -12
  5. data/dry-struct.gemspec +26 -27
  6. data/lib/dry-struct.rb +2 -0
  7. data/lib/dry/struct.rb +14 -3
  8. data/lib/dry/struct/class_interface.rb +91 -34
  9. data/lib/dry/struct/compiler.rb +22 -0
  10. data/lib/dry/struct/constructor.rb +4 -24
  11. data/lib/dry/struct/errors.rb +13 -3
  12. data/lib/dry/struct/extensions.rb +2 -0
  13. data/lib/dry/struct/extensions/pretty_print.rb +3 -1
  14. data/lib/dry/struct/hashify.rb +5 -1
  15. data/lib/dry/struct/printer.rb +5 -0
  16. data/lib/dry/struct/struct_builder.rb +18 -11
  17. data/lib/dry/struct/sum.rb +3 -0
  18. data/lib/dry/struct/value.rb +4 -6
  19. data/lib/dry/struct/version.rb +3 -1
  20. metadata +36 -59
  21. data/.codeclimate.yml +0 -12
  22. data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +0 -10
  23. data/.github/ISSUE_TEMPLATE/---bug-report.md +0 -30
  24. data/.github/ISSUE_TEMPLATE/---feature-request.md +0 -18
  25. data/.github/workflows/ci.yml +0 -74
  26. data/.github/workflows/docsite.yml +0 -34
  27. data/.github/workflows/sync_configs.yml +0 -34
  28. data/.gitignore +0 -12
  29. data/.rspec +0 -4
  30. data/.rubocop.yml +0 -95
  31. data/.yardopts +0 -4
  32. data/CODE_OF_CONDUCT.md +0 -13
  33. data/CONTRIBUTING.md +0 -29
  34. data/Gemfile +0 -28
  35. data/Rakefile +0 -10
  36. data/benchmarks/basic.rb +0 -57
  37. data/benchmarks/constrained.rb +0 -37
  38. data/benchmarks/profile_instantiation.rb +0 -19
  39. data/benchmarks/setup.rb +0 -11
  40. data/bin/console +0 -12
  41. data/bin/setup +0 -7
  42. data/docsite/source/index.html.md +0 -103
  43. data/docsite/source/nested-structs.html.md +0 -49
  44. data/docsite/source/recipes.html.md +0 -143
  45. data/log/.gitkeep +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5903d3760fd689eec22fc3e95cc6d8bed946bb9e23ca9875474dda901e5ac1a9
4
- data.tar.gz: b0386bae928cf63becfcc7ae2e46384acfe6fc40f01b65d35dd189d300ccb27e
3
+ metadata.gz: 64b4b12493455f8f916b5708d7c2afdc2649099d3b7b8c41045b73517cce05f8
4
+ data.tar.gz: 84989a15e01c83c1d71b0d5e034ca54d7727fc7c37db29c0e8b2db88ece51f15
5
5
  SHA512:
6
- metadata.gz: 55e27a71675e579b9d7a6732bf9535c8a2a044ff730ef2512b6c30f82b23893abf4f4652812a4bdcbe3b034c821f320031618f09023e7b32d9d9855963b2a7f2
7
- data.tar.gz: 44bfe008840f54162d65399b29ea7073faced71559fa76beaed57faf40a74808e1fa148574eb08225eeb5bff46da5851ec37829a58235bc5aa8f4c3c3913eb03
6
+ metadata.gz: 2462f24f972cbaa0c89399f76e3247c3b1fac9a6a88a0f1ea3a6e4ceb37fea2a463b58967c26b102456d589755fe2d3350c324b0646b870db27c6c434eba5acf
7
+ data.tar.gz: 6156aa3704d9afffedc1370bf17371177d41696c289005fe5d41e4d356049ab881a6e40675756ab6bacd59ca4ac41f792a0dc872da9ffd2724b12cdd44c78e28
@@ -1,15 +1,51 @@
1
- # 1.2.0 2019-12-20
1
+ ## 1.3.0 2020-02-10
2
2
 
3
- ## Changed
3
+
4
+ ### Added
5
+
6
+ - Nested structures will reuse type and key transformations from of the enclosing struct (flash-gordon)
7
+
8
+ ```ruby
9
+ class User < Dry::Struct
10
+ transform_keys(&:to_sym)
11
+
12
+ attribute :name, Types::String
13
+ attribute :address do
14
+ # this struct will inherit transform_keys(&:to_sym)
15
+ attribute :city, Types::String
16
+ end
17
+
18
+ # nested struct will _not_ transform keys because a parent
19
+ # struct is given
20
+ attribute :contacts, Dry::Struct do
21
+ attribute :email, Types::String
22
+ end
23
+ end
24
+ ```
25
+ - `Dry::Struct::Constructor` finally acts like a fully-featured type (flash-gordon)
26
+ - `Dry::Struct.abstract` declares a struct class as abstract. An abstract class is used as a default superclass for nested structs (flash-gordon)
27
+ - `Struct.to_ast` and struct compiler (@flash-gordon)
28
+
29
+ ### Changed
30
+
31
+ - [internal] metadata is now stored inside schema (flash-gordon)
32
+
33
+ [Compare v1.2.0...v1.3.0](https://github.com/dry-rb/dry-struct/compare/v1.2.0...v1.3.0)
34
+
35
+ ## 1.2.0 2019-12-20
36
+
37
+
38
+ ### Changed
4
39
 
5
40
  - `Dry::Struct::Value` is deprecated. `Dry::Struct` instances were never meant to be mutable, we have no support for this. The only difference between `Dry::Struct` and `Dry::Struct::Value` is that the latter is deeply frozen. Freezing objects slows the code down and gives you very little benefit in return. If you have a use case for `Value`, it won't be hard to roll your own solution using [ice_nine](https://github.com/dkubb/ice_nine) (flash-gordon)
6
- - In the thread of the previous change, structs now use immutable equalizer. This means `Struct#hash` memoizes its value after the first invokation. Depending on the case, this may speed up your code significantly (flash-gordon)
41
+ - In the thread of the previous change, structs now use immutable equalizer. This means `Struct#hash` memoizes its value after the first invocation. Depending on the case, this may speed up your code significantly (flash-gordon)
7
42
 
8
- [Compare v1.1.1...v1.2.0](https://github.com/dry-rb/dry-struct/compare/v1.1.1...v.1.2.0)
43
+ [Compare v1.1.1...v1.2.0](https://github.com/dry-rb/dry-struct/compare/v1.1.1...v1.2.0)
9
44
 
10
- # 1.1.1 2019-10-13
45
+ ## 1.1.1 2019-10-13
11
46
 
12
- ## Changed
47
+
48
+ ### Changed
13
49
 
14
50
  - Pattern matching syntax is simplified with `deconstruct_keys` (k-tsj)
15
51
 
@@ -30,21 +66,20 @@
30
66
 
31
67
  [Compare v1.1.0...v1.1.1](https://github.com/dry-rb/dry-struct/compare/v1.1.0...v1.1.1)
32
68
 
33
- # 1.1.0 2019-10-07
69
+ ## 1.1.0 2019-10-07
70
+
34
71
 
35
- ## Added
72
+ ### Added
36
73
 
37
74
  - Experimental support for pattern matching :tada: (flash-gordon)
38
75
 
39
- [Compare v1.0.0...v1.1.0](https://github.com/dry-rb/dry-struct/compare/v1.0.0...v1.1.0)
40
76
 
41
- # 1.0.0 2019-04-23
77
+ [Compare v1.0.0...v1.1.0](https://github.com/dry-rb/dry-struct/compare/v1.0.0...v1.1.0)
42
78
 
43
- ## Changed
79
+ ## 1.0.0 2019-04-23
44
80
 
45
- - `valid?` and `===` behave differently, `===` works the same way `Class#===` does and `valid?` checks if the value _can be_ coerced to the struct (flash-gordon)
46
81
 
47
- ## Added
82
+ ### Added
48
83
 
49
84
  - `Struct.call` now accepts an optional block that will be called on failed coercion. This behavior is consistent with dry-types 1.0. Note that `.new` doesn't take a block (flash-gordon)
50
85
  ```ruby
@@ -53,11 +88,16 @@
53
88
  # => :oh_no
54
89
  ```
55
90
 
91
+ ### Changed
92
+
93
+ - `valid?` and `===` behave differently, `===` works the same way `Class#===` does and `valid?` checks if the value _can be_ coerced to the struct (flash-gordon)
94
+
56
95
  [Compare v0.7.0...v1.0.0](https://github.com/dry-rb/dry-struct/compare/v0.7.0...v1.0.0)
57
96
 
58
- # 0.7.0 2019-03-22
97
+ ## 0.7.0 2019-03-22
59
98
 
60
- ## Changed
99
+
100
+ ### Changed
61
101
 
62
102
  - [BREAKING] `Struct.input` was renamed `Struct.schema`, hence `Struct.schema` returns an instance of `Dry::Types::Hash::Schema` rather than a `Hash`. Schemas are also implementing `Enumerable` but they iterate over key types.
63
103
  New API:
@@ -84,13 +124,10 @@
84
124
 
85
125
  [Compare v0.6.0...v0.7.0](https://github.com/dry-rb/dry-struct/compare/v0.6.0...v0.7.0)
86
126
 
87
- # v0.6.0 2018-10-24
127
+ ## 0.6.0 2018-10-24
88
128
 
89
- ## Changed
90
129
 
91
- - [BREAKING] `Struct.attribute?` in the old sense is deprecated, use `has_attribute?` as a replacement
92
-
93
- ## Added
130
+ ### Added
94
131
 
95
132
  - `Struct.attribute?` is an easy way to define omittable attributes (flash-gordon):
96
133
 
@@ -102,19 +139,20 @@
102
139
  # User.new(name: 'John') # => #<User name="John">
103
140
  ```
104
141
 
105
- ## Fixed
142
+ ### Fixed
106
143
 
107
144
  - `Struct#to_h` recursively converts hash values to hashes, this was done to be consistent with current behavior for arrays (oeoeaio + ZimbiX)
108
145
 
109
- [Compare v0.5.1...v0.6.0](https://github.com/dry-rb/dry-struct/compare/v0.5.1...v0.6.0)
146
+ ### Changed
110
147
 
111
- # v0.5.1 2018-08-11
148
+ - [BREAKING] `Struct.attribute?` in the old sense is deprecated, use `has_attribute?` as a replacement
112
149
 
113
- ## Fixed
150
+ [Compare v0.5.1...v0.6.0](https://github.com/dry-rb/dry-struct/compare/v0.5.1...v0.6.0)
114
151
 
115
- - Constant resolution is now restricted to the current module when structs are automatically defined using the block syntax. This shouldn't break any existing code (piktur)
152
+ ## 0.5.1 2018-08-11
116
153
 
117
- ## Added
154
+
155
+ ### Added
118
156
 
119
157
  - Pretty print extension (ojab)
120
158
  ```ruby
@@ -126,18 +164,17 @@
126
164
  address=#<Test::Address city="NYC", zipcode="123">>
127
165
  ```
128
166
 
129
- [Compare v0.5.0...v0.5.1](https://github.com/dry-rb/dry-struct/compare/v0.5.0...v0.5.1)
167
+ ### Fixed
130
168
 
131
- # v0.5.0 2018-05-03
169
+ - Constant resolution is now restricted to the current module when structs are automatically defined using the block syntax. This shouldn't break any existing code (piktur)
170
+
171
+
172
+ [Compare v0.5.0...v0.5.1](https://github.com/dry-rb/dry-struct/compare/v0.5.0...v0.5.1)
132
173
 
133
- ## BREAKING CHANGES
174
+ ## 0.5.0 2018-05-03
134
175
 
135
- - `constructor_type` was removed, use `transform_types` and `transform_keys` as a replacement (see below)
136
- - Default types are evaluated _only_ on missing values. Again, use `tranform_types` as a work around for `nil`s
137
- - Values are now stored within a single instance variable names `@attributes`, this sped up struct creation and improved support for reserved attribute names such as `hash`, they don't get a getter but still can be read via `#[]`
138
- - Ruby 2.3 is a minimal supported version
139
176
 
140
- ## Added
177
+ ### Added
141
178
 
142
179
  - `Dry::Struct.transform_types` accepts a block which is yielded on every type to add. Since types are `dry-types`' objects that come with a robust DSL it's rather simple to restore the behavior of `constructor_type`. See https://github.com/dry-rb/dry-struct/pull/64 for details (flash-gordon)
143
180
 
@@ -150,9 +187,7 @@
150
187
  end
151
188
  end
152
189
  ```
153
-
154
190
  - `Data::Struct.transform_keys` accepts a block/proc that transforms keys of input hashes. The most obvious usage is simbolization but arbitrary transformations are allowed (flash-gordon)
155
-
156
191
  - `Dry.Struct` builds a struct by a hash of attribute names and types (citizen428)
157
192
 
158
193
  ```ruby
@@ -160,7 +195,6 @@
160
195
  attribute :email, 'strict.string'
161
196
  end
162
197
  ```
163
-
164
198
  - Support for `Struct.meta`, note that `.meta` returns a _new class_ (flash-gordon)
165
199
 
166
200
  ```ruby
@@ -172,7 +206,6 @@
172
206
 
173
207
  User.new(name: 'Jade').class == UserWithMeta.new(name: 'Jade').class # => false
174
208
  ```
175
-
176
209
  - `Struct.attribute` yields a block with definition for nested structs. It defines a nested constant for the new struct and supports arrays (AMHOL + flash-gordon)
177
210
 
178
211
  ```ruby
@@ -191,85 +224,96 @@
191
224
  # ^This automatically defines User::Address and User::Account
192
225
  ```
193
226
 
194
- ## Fixed
227
+ ### Fixed
195
228
 
196
229
  - Adding a new attribute invalidates `attribute_names` (flash-gordon)
197
230
  - Struct classes track subclasses and define attributes in them, now it doesn't matter whether you define attributes first and _then_ subclass or vice versa. Note this can lead to memory leaks in Rails environment when struct classes are reloaded (flash-gordon)
198
231
 
232
+
199
233
  [Compare v0.4.0...v0.5.0](https://github.com/dry-rb/dry-struct/compare/v0.4.0...v0.5.0)
200
234
 
201
- # v0.4.0 2017-11-04
235
+ ## 0.4.0 2017-11-04
236
+
202
237
 
203
- ## Changed
238
+ ### Fixed
239
+
240
+ - `Struct#new` doesn't call `.to_hash` recursively (flash-gordon)
241
+
242
+ ### Changed
204
243
 
205
244
  - Attribute readers don't override existing instance methods (solnic)
206
245
  - `Struct#new` uses raw attributes instead of method calls, this makes the behavior consistent with the change above (flash-gordon)
207
246
  - `constructor_type` now actively rejects `:weak` and `:symbolized` values (GustavoCaso)
208
247
 
209
- ## Fixed
210
-
211
- - `Struct#new` doesn't call `.to_hash` recursively (flash-gordon)
212
-
213
248
  [Compare v0.3.1...v0.4.0](https://github.com/dry-rb/dry-struct/compare/v0.3.1...v0.4.0)
214
249
 
215
- # v0.3.1 2017-06-30
250
+ ## 0.3.1 2017-06-30
251
+
216
252
 
217
- ## Added
253
+ ### Added
218
254
 
219
255
  - `Struct.constructor` that makes dry-struct more aligned with dry-types; now you can have a struct with a custom constructor that will be called _before_ calling the `new` method (v-kolesnikov)
220
256
  - `Struct.attribute?` and `Struct.attribute_names` for introspecting struct attributes (flash-gordon)
221
257
  - `Struct#__new__` is a safe-to-use-in-gems alias for `Struct#new` (flash-gordon)
222
258
 
259
+
223
260
  [Compare v0.3.0...v0.3.1](https://github.com/dry-rb/dry-struct/compare/v0.3.0...v0.3.1)
224
261
 
225
- # v0.3.0 2017-05-05
262
+ ## 0.3.0 2017-05-05
226
263
 
227
- ## Added
264
+
265
+ ### Added
228
266
 
229
267
  - `Dry::Struct#new` method to return new instance with applied changeset (Kukunin)
230
268
 
231
- ## Fixed
269
+ ### Fixed
232
270
 
233
271
  - `.[]` and `.call` does not coerce subclass to superclass anymore (Kukunin)
234
272
  - Raise ArgumentError when attribute type is a string and no value provided is for `new` (GustavoCaso)
235
273
 
236
- ## Changed
274
+ ### Changed
237
275
 
238
276
  - `.new` without arguments doesn't use nil as an input for non-default types anymore (flash-gordon)
239
277
 
240
278
  [Compare v0.2.1...v0.3.0](https://github.com/dry-rb/dry-struct/compare/v0.2.1...v0.3.0)
241
279
 
242
- # v0.2.1 2017-02-27
280
+ ## 0.2.1 2017-02-27
281
+
243
282
 
244
- ## Fixed
283
+ ### Fixed
245
284
 
246
285
  - Fixed `Dry::Struct::Value` which appeared to be broken in the last release (flash-gordon)
247
286
 
287
+
248
288
  [Compare v0.2.0...v0.2.1](https://github.com/dry-rb/dry-struct/compare/v0.2.0...v0.2.1)
249
289
 
250
- # v0.2.0 2016-02-26
290
+ ## 0.2.0 2016-02-26
291
+
251
292
 
252
- ## Changed
293
+ ### Changed
253
294
 
254
295
  - Struct attributes can be overridden in a subclass (flash-gordon)
255
296
 
256
297
  [Compare v0.1.1...v0.2.0](https://github.com/dry-rb/dry-struct/compare/v0.1.1...v0.2.0)
257
298
 
258
- # v0.1.1 2016-11-13
299
+ ## 0.1.1 2016-11-13
259
300
 
260
- ## Fixed
301
+
302
+ ### Fixed
261
303
 
262
304
  - Make `Dry::Struct` act as a constrained type. This fixes the behavior of sum types containing structs (flash-gordon)
263
305
 
306
+
264
307
  [Compare v0.1.0...v0.1.1](https://github.com/dry-rb/dry-struct/compare/v0.1.0...v0.1.1)
265
308
 
266
- # v0.1.0 2016-09-21
309
+ ## 0.1.0 2016-09-21
310
+
267
311
 
268
- ## Added
312
+ ### Added
269
313
 
270
314
  - `:strict_with_defaults` constructor type (backus)
271
315
 
272
- ## Changed
316
+ ### Changed
273
317
 
274
318
  - [BREAKING] `:strict` was renamed to `:permissive` as it ignores missing keys (backus)
275
319
  - [BREAKING] `:strict` now raises on unexpected keys (backus)
@@ -277,6 +321,6 @@
277
321
 
278
322
  [Compare v0.0.1...v0.1.0](https://github.com/dry-rb/dry-struct/compare/v0.0.1...v0.1.0)
279
323
 
280
- # v0.0.1 2016-07-17
324
+ ## 0.0.1 2016-07-17
281
325
 
282
326
  Initial release of code imported from dry-types
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015-2019 dry-rb team
3
+ Copyright (c) 2015-2020 dry-rb team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
data/README.md CHANGED
@@ -1,25 +1,29 @@
1
1
  [gem]: https://rubygems.org/gems/dry-struct
2
- [ci]: https://github.com/dry-rb/dry-struct/actions?query=workflow%3Aci
3
- [codeclimate]: https://codeclimate.com/github/dry-rb/dry-struct
4
- [inchpages]: http://inch-ci.org/github/dry-rb/dry-struct
2
+ [actions]: https://github.com/dry-rb/dry-struct/actions
3
+ [codacy]: https://www.codacy.com/gh/dry-rb/dry-struct
5
4
  [chat]: https://dry-rb.zulipchat.com
5
+ [inchpages]: http://inch-ci.org/github/dry-rb/dry-struct
6
6
 
7
7
  # dry-struct [![Join the chat at https://dry-rb.zulipchat.com](https://img.shields.io/badge/dry--rb-join%20chat-%23346b7a.svg)][chat]
8
8
 
9
9
  [![Gem Version](https://badge.fury.io/rb/dry-struct.svg)][gem]
10
- [![Build Status](https://github.com/dry-rb/dry-struct/workflows/ci/badge.svg)][ci]
11
- [![Code Climate](https://codeclimate.com/github/dry-rb/dry-struct/badges/gpa.svg)][codeclimate]
12
- [![Test Coverage](https://codeclimate.com/github/dry-rb/dry-struct/badges/coverage.svg)][codeclimate]
10
+ [![CI Status](https://github.com/dry-rb/dry-struct/workflows/ci/badge.svg)][actions]
11
+ [![Codacy Badge](https://api.codacy.com/project/badge/Grade/961f5c776f1d49218b2cede3745e059c)][codacy]
12
+ [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/961f5c776f1d49218b2cede3745e059c)][codacy]
13
13
  [![Inline docs](http://inch-ci.org/github/dry-rb/dry-struct.svg?branch=master)][inchpages]
14
14
 
15
- Typed structs and value objects
15
+ ## Links
16
+
17
+ * [User documentation](http://dry-rb.org/gems/dry-struct)
18
+ * [API documentation](http://rubydoc.info/gems/dry-struct)
16
19
 
17
- ## Development
20
+ ## Supported Ruby versions
18
21
 
19
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
22
+ This library officially supports the following Ruby versions:
20
23
 
21
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
24
+ * MRI >= `2.4`
25
+ * jruby >= `9.2`
22
26
 
23
- ## Contributing
27
+ ## License
24
28
 
25
- Bug reports and pull requests are welcome on GitHub at https://github.com/dry-rb/dry-struct.
29
+ See `LICENSE` file.
@@ -1,41 +1,40 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+ # this file is managed by dry-rb/devtools project
3
+
4
+ lib = File.expand_path('lib', __dir__)
2
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
6
  require 'dry/struct/version'
4
7
 
5
8
  Gem::Specification.new do |spec|
6
9
  spec.name = 'dry-struct'
7
- spec.version = Dry::Struct::VERSION
8
- spec.authors = ['Piotr Solnica']
9
- spec.email = ['piotr.solnica@gmail.com']
10
+ spec.authors = ["Piotr Solnica"]
11
+ spec.email = ["piotr.solnica@gmail.com"]
10
12
  spec.license = 'MIT'
13
+ spec.version = Dry::Struct::VERSION.dup
11
14
 
12
- spec.summary = 'Typed structs and value objects.'
15
+ spec.summary = "Typed structs and value objects"
13
16
  spec.description = spec.summary
14
- spec.homepage = 'https://github.com/dry-rb/dry-struct'
17
+ spec.homepage = 'https://dry-rb.org/gems/dry-struct'
18
+ spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-struct.gemspec", "lib/**/*"]
19
+ spec.bindir = 'bin'
20
+ spec.executables = []
21
+ spec.require_paths = ['lib']
15
22
 
16
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
- # delete this section to allow pushing this gem to any host.
18
- if spec.respond_to?(:metadata)
19
- spec.metadata['allowed_push_host'] = 'https://rubygems.org'
20
- spec.metadata['changelog_uri'] = 'https://github.com/dry-rb/dry-struct/blob/master/CHANGELOG.md'
21
- spec.metadata['source_code_uri'] = 'https://github.com/dry-rb/dry-struct'
22
- else
23
- raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
24
- end
23
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
24
+ spec.metadata['changelog_uri'] = 'https://github.com/dry-rb/dry-struct/blob/master/CHANGELOG.md'
25
+ spec.metadata['source_code_uri'] = 'https://github.com/dry-rb/dry-struct'
26
+ spec.metadata['bug_tracker_uri'] = 'https://github.com/dry-rb/dry-struct/issues'
25
27
 
26
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
- spec.bindir = 'exe'
28
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
- spec.require_paths = ['lib']
30
28
  spec.required_ruby_version = ">= 2.4.0"
31
29
 
32
- spec.add_runtime_dependency 'dry-equalizer', '~> 0.3'
33
- spec.add_runtime_dependency 'dry-types', '~> 1.0'
34
- spec.add_runtime_dependency 'dry-core', '~> 0.4', '>= 0.4.3'
35
- spec.add_runtime_dependency 'ice_nine', '~> 0.11'
30
+ # to update dependencies edit project.yml
31
+ spec.add_runtime_dependency "dry-core", "~> 0.4", ">= 0.4.4"
32
+ spec.add_runtime_dependency "dry-equalizer", "~> 0.3"
33
+ spec.add_runtime_dependency "dry-types", "~> 1.3"
34
+ spec.add_runtime_dependency "ice_nine", "~> 0.11"
36
35
 
37
- spec.add_development_dependency 'bundler'
38
- spec.add_development_dependency 'rake', '~> 11.0'
39
- spec.add_development_dependency 'rspec', '~> 3.3'
40
- spec.add_development_dependency 'yard', '~> 0.9.5'
36
+ spec.add_development_dependency "bundler"
37
+ spec.add_development_dependency "rake"
38
+ spec.add_development_dependency "rspec"
39
+ spec.add_development_dependency "yard"
41
40
  end