nxt_error_registry 0.1.4 → 0.2.5

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: d5e4747e5ca829838f0977c5fc22d6968694db1bd68b0893cd9477962db25e21
4
- data.tar.gz: 00a3e42521ae209cf531dfa34c4247f1659a2af1ee3bcb1a8b216ed356683e13
3
+ metadata.gz: bda52fd0450bbea61e8dd04ae0056754de913a89035d271bd95e1e597c3fd9f5
4
+ data.tar.gz: d0e38001db61d3c2095d0383bd553c8851cf79afafbdd7c68e2c7877c072de2e
5
5
  SHA512:
6
- metadata.gz: 598eb012588cd6d2dc748ed66043aac228d78397712f42a0ea72390e495bf7aebac8fc05ddf5b401c2d172c087bd4aa7f2c518c487181aed67b1298947585369
7
- data.tar.gz: 67f6b433945347d037d4e354347a7d21794f75fdae34d0b59ec7252efa037082c688708316f78b5fc024e218b0c7f5409004c856f8583144bf8c96bb8c24e158
6
+ metadata.gz: b6114f3f6c8f53e0f6c9d47c088bac6b02b9bce405c376bb4d9c3e8c569edaa5781af8509b32bd88c860768f8868ffbd61a21faef19abe5db3a78073722ef6a0
7
+ data.tar.gz: e726218ec04e307db59869b9e839d287fd5a79e9467ba721472f1e6a60ddb8594df7f88dec9f5e58e3c2b7094a65c944fa3063d37accac51fca0a66d2ff0d897
data/.circleci/config.yml CHANGED
@@ -4,7 +4,7 @@ jobs:
4
4
  build:
5
5
  working_directory: /home/circleci/app
6
6
  docker:
7
- - image: circleci/ruby:2.6.2-node
7
+ - image: circleci/ruby:2.7.2-node
8
8
  environment:
9
9
  RACK_ENV: test
10
10
  RAILS_ENV: test
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.5
1
+ 2.7.2
data/CHANGELOG.md ADDED
@@ -0,0 +1,41 @@
1
+ # v0.2.5 2022-01-27
2
+
3
+ ### Updated
4
+
5
+ - Relax dependencies to Railties and ActiveSupport to allow Rails 7.x
6
+
7
+ # v0.2.4 2021-03-26
8
+
9
+ ### Updated
10
+
11
+ - Switched Rails dependency to railties
12
+
13
+ # v0.2.3 2021-01-05
14
+
15
+ ### Updated
16
+
17
+ - Loosen Rails and ActiveSupport version constraint to allow 6.1
18
+
19
+ # v0.2.2 2020-12-28
20
+
21
+ ### Changed
22
+
23
+ - Updated dependencies
24
+
25
+ [Compare v0.2.1...v0.2.2](https://github.com/nxt-insurance/nxt_error_registry/compare/v0.2.1...v0.2.2)
26
+
27
+ # v0.2.1 2020-08-28
28
+
29
+ ### Fixed
30
+
31
+ - Allow legacy codes of format /\A\d{3}\.\d{3}\z/
32
+
33
+ [Compare v0.2.0...v0.2.1](https://github.com/nxt-insurance/nxt_error_registry/compare/v0.2.0...v0.2.1)
34
+
35
+ # v0.2.0 2020-08-25
36
+
37
+ ### Added
38
+
39
+ - Use uuids as codes instead of numeric codes in sequence
40
+
41
+ [Compare v0.1.6...v0.2.0](https://github.com/nxt-insurance/nxt_error_registry/compare/v0.1.6...v0.2.0)
data/Gemfile.lock CHANGED
@@ -1,156 +1,87 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nxt_error_registry (0.1.4)
5
- activesupport (< 6.1)
6
- rails (< 6.1)
4
+ nxt_error_registry (0.2.5)
5
+ activesupport (< 8.0)
6
+ railties (< 8.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actioncable (6.0.2.1)
12
- actionpack (= 6.0.2.1)
13
- nio4r (~> 2.0)
14
- websocket-driver (>= 0.6.1)
15
- actionmailbox (6.0.2.1)
16
- actionpack (= 6.0.2.1)
17
- activejob (= 6.0.2.1)
18
- activerecord (= 6.0.2.1)
19
- activestorage (= 6.0.2.1)
20
- activesupport (= 6.0.2.1)
21
- mail (>= 2.7.1)
22
- actionmailer (6.0.2.1)
23
- actionpack (= 6.0.2.1)
24
- actionview (= 6.0.2.1)
25
- activejob (= 6.0.2.1)
26
- mail (~> 2.5, >= 2.5.4)
27
- rails-dom-testing (~> 2.0)
28
- actionpack (6.0.2.1)
29
- actionview (= 6.0.2.1)
30
- activesupport (= 6.0.2.1)
31
- rack (~> 2.0, >= 2.0.8)
11
+ actionpack (7.0.1)
12
+ actionview (= 7.0.1)
13
+ activesupport (= 7.0.1)
14
+ rack (~> 2.0, >= 2.2.0)
32
15
  rack-test (>= 0.6.3)
33
16
  rails-dom-testing (~> 2.0)
34
17
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
- actiontext (6.0.2.1)
36
- actionpack (= 6.0.2.1)
37
- activerecord (= 6.0.2.1)
38
- activestorage (= 6.0.2.1)
39
- activesupport (= 6.0.2.1)
40
- nokogiri (>= 1.8.5)
41
- actionview (6.0.2.1)
42
- activesupport (= 6.0.2.1)
18
+ actionview (7.0.1)
19
+ activesupport (= 7.0.1)
43
20
  builder (~> 3.1)
44
21
  erubi (~> 1.4)
45
22
  rails-dom-testing (~> 2.0)
46
23
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
47
- activejob (6.0.2.1)
48
- activesupport (= 6.0.2.1)
49
- globalid (>= 0.3.6)
50
- activemodel (6.0.2.1)
51
- activesupport (= 6.0.2.1)
52
- activerecord (6.0.2.1)
53
- activemodel (= 6.0.2.1)
54
- activesupport (= 6.0.2.1)
55
- activestorage (6.0.2.1)
56
- actionpack (= 6.0.2.1)
57
- activejob (= 6.0.2.1)
58
- activerecord (= 6.0.2.1)
59
- marcel (~> 0.3.1)
60
- activesupport (6.0.2.1)
24
+ activesupport (7.0.1)
61
25
  concurrent-ruby (~> 1.0, >= 1.0.2)
62
- i18n (>= 0.7, < 2)
63
- minitest (~> 5.1)
64
- tzinfo (~> 1.1)
65
- zeitwerk (~> 2.2)
26
+ i18n (>= 1.6, < 2)
27
+ minitest (>= 5.1)
28
+ tzinfo (~> 2.0)
66
29
  builder (3.2.4)
67
- coderay (1.1.2)
68
- concurrent-ruby (1.1.6)
30
+ coderay (1.1.3)
31
+ concurrent-ruby (1.1.9)
69
32
  crass (1.0.6)
70
- diff-lcs (1.3)
71
- erubi (1.9.0)
72
- globalid (0.4.2)
73
- activesupport (>= 4.2.0)
74
- i18n (1.8.2)
33
+ diff-lcs (1.5.0)
34
+ erubi (1.10.0)
35
+ i18n (1.9.0)
75
36
  concurrent-ruby (~> 1.0)
76
- loofah (2.4.0)
37
+ loofah (2.13.0)
77
38
  crass (~> 1.0.2)
78
39
  nokogiri (>= 1.5.9)
79
- mail (2.7.1)
80
- mini_mime (>= 0.1.1)
81
- marcel (0.3.3)
82
- mimemagic (~> 0.3.2)
83
- method_source (0.9.2)
84
- mimemagic (0.3.4)
85
- mini_mime (1.0.2)
86
- mini_portile2 (2.4.0)
87
- minitest (5.14.0)
88
- nio4r (2.5.2)
89
- nokogiri (1.10.9)
90
- mini_portile2 (~> 2.4.0)
91
- pry (0.12.2)
92
- coderay (~> 1.1.0)
93
- method_source (~> 0.9.0)
94
- rack (2.2.2)
40
+ method_source (1.0.0)
41
+ mini_portile2 (2.7.1)
42
+ minitest (5.15.0)
43
+ nokogiri (1.13.1)
44
+ mini_portile2 (~> 2.7.0)
45
+ racc (~> 1.4)
46
+ pry (0.14.1)
47
+ coderay (~> 1.1)
48
+ method_source (~> 1.0)
49
+ racc (1.6.0)
50
+ rack (2.2.3)
95
51
  rack-test (1.1.0)
96
52
  rack (>= 1.0, < 3)
97
- rails (6.0.2.1)
98
- actioncable (= 6.0.2.1)
99
- actionmailbox (= 6.0.2.1)
100
- actionmailer (= 6.0.2.1)
101
- actionpack (= 6.0.2.1)
102
- actiontext (= 6.0.2.1)
103
- actionview (= 6.0.2.1)
104
- activejob (= 6.0.2.1)
105
- activemodel (= 6.0.2.1)
106
- activerecord (= 6.0.2.1)
107
- activestorage (= 6.0.2.1)
108
- activesupport (= 6.0.2.1)
109
- bundler (>= 1.3.0)
110
- railties (= 6.0.2.1)
111
- sprockets-rails (>= 2.0.0)
112
53
  rails-dom-testing (2.0.3)
113
54
  activesupport (>= 4.2.0)
114
55
  nokogiri (>= 1.6)
115
- rails-html-sanitizer (1.3.0)
56
+ rails-html-sanitizer (1.4.2)
116
57
  loofah (~> 2.3)
117
- railties (6.0.2.1)
118
- actionpack (= 6.0.2.1)
119
- activesupport (= 6.0.2.1)
58
+ railties (7.0.1)
59
+ actionpack (= 7.0.1)
60
+ activesupport (= 7.0.1)
120
61
  method_source
121
- rake (>= 0.8.7)
122
- thor (>= 0.20.3, < 2.0)
123
- rake (13.0.1)
124
- rspec (3.9.0)
125
- rspec-core (~> 3.9.0)
126
- rspec-expectations (~> 3.9.0)
127
- rspec-mocks (~> 3.9.0)
128
- rspec-core (3.9.0)
129
- rspec-support (~> 3.9.0)
130
- rspec-expectations (3.9.0)
62
+ rake (>= 12.2)
63
+ thor (~> 1.0)
64
+ zeitwerk (~> 2.5)
65
+ rake (13.0.6)
66
+ rspec (3.10.0)
67
+ rspec-core (~> 3.10.0)
68
+ rspec-expectations (~> 3.10.0)
69
+ rspec-mocks (~> 3.10.0)
70
+ rspec-core (3.10.1)
71
+ rspec-support (~> 3.10.0)
72
+ rspec-expectations (3.10.2)
131
73
  diff-lcs (>= 1.2.0, < 2.0)
132
- rspec-support (~> 3.9.0)
133
- rspec-mocks (3.9.0)
74
+ rspec-support (~> 3.10.0)
75
+ rspec-mocks (3.10.2)
134
76
  diff-lcs (>= 1.2.0, < 2.0)
135
- rspec-support (~> 3.9.0)
136
- rspec-support (3.9.0)
137
- rspec_junit_formatter (0.4.1)
77
+ rspec-support (~> 3.10.0)
78
+ rspec-support (3.10.3)
79
+ rspec_junit_formatter (0.5.1)
138
80
  rspec-core (>= 2, < 4, != 2.12.0)
139
- sprockets (4.0.0)
81
+ thor (1.2.1)
82
+ tzinfo (2.0.4)
140
83
  concurrent-ruby (~> 1.0)
141
- rack (> 1, < 3)
142
- sprockets-rails (3.2.1)
143
- actionpack (>= 4.0)
144
- activesupport (>= 4.0)
145
- sprockets (>= 3.0.0)
146
- thor (1.0.1)
147
- thread_safe (0.3.6)
148
- tzinfo (1.2.6)
149
- thread_safe (~> 0.1)
150
- websocket-driver (0.7.1)
151
- websocket-extensions (>= 0.1.0)
152
- websocket-extensions (0.1.4)
153
- zeitwerk (2.2.2)
84
+ zeitwerk (2.5.3)
154
85
 
155
86
  PLATFORMS
156
87
  ruby
@@ -161,7 +92,7 @@ DEPENDENCIES
161
92
  pry
162
93
  rake (~> 13.0)
163
94
  rspec (~> 3.0)
164
- rspec_junit_formatter (~> 0.4.1)
95
+ rspec_junit_formatter (~> 0.5.1)
165
96
 
166
97
  BUNDLED WITH
167
98
  2.1.4
data/README.md CHANGED
@@ -25,9 +25,9 @@ Or install it yourself as:
25
25
  ```ruby
26
26
  class LevelOne
27
27
  extend NxtErrorRegistry
28
- register_error :LevelOneError, type: StandardError, code: '100.100'
28
+ register_error :LevelOneError, type: StandardError, code: '84b67c94-efb4-48e8-a5e9-ed1fa1beb988'
29
29
  # This will set the LevelOne::LevelOneError constant that you can raise anywhere
30
- register_error :LevelTwoError, type: LevelOneError, code: '100.101', capture: true, reraise: false
30
+ register_error :LevelTwoError, type: LevelOneError, code: 'a7fc9a8c-9f83-4a2d-8808-75dbef8e376f', capture: true, reraise: false
31
31
  # You can also pass in additional options when registering your errors. These will be available on you error class
32
32
 
33
33
  def raise_level_one_error
@@ -48,7 +48,7 @@ All arguments are optional and will be set to a placeholder if not provided
48
48
 
49
49
  ```ruby
50
50
  rails g register_error --name NewErrorName --type SomeKindOfError
51
- # => register_error :NewErrorName, type: SomeKindOfError, code: '100.000'
51
+ # => register_error :NewErrorName, type: SomeKindOfError, code: 'fa7afa83-6c68-4186-ada4-a573b6a72bd9'
52
52
  ```
53
53
 
54
54
  ### Or use the rake task instead.
@@ -57,7 +57,7 @@ All arguments are optional and will be set to a placeholder if not provided
57
57
 
58
58
  ```ruby
59
59
  rake nxt_error_registry:generate_code\[ErrorName,ParentType\]
60
- # => register_error :ErrorName, type: ParentType, code: '100.000'
60
+ # => register_error :ErrorName, type: ParentType, code: '5c8152cd-b8b9-4fb0-a5fe-5c11d200affc'
61
61
  ```
62
62
  ## Development
63
63
 
@@ -2,43 +2,28 @@ require 'singleton'
2
2
 
3
3
  module NxtErrorRegistry
4
4
  class CodesHarness
5
+ CodeAlreadyRegistered = Class.new(StandardError)
5
6
  include Singleton
6
7
 
7
8
  def generate_code
8
- puts "WARNING: Codes are not in sequence: #{codes_not_in_sequence}" if codes_not_in_sequence.any?
9
-
10
- last_id = codes_as_ids.last
11
- return '100.000' unless last_id
12
-
13
- next_id = last_id + 1
14
- id_to_code(next_id)
9
+ generate_next_code
10
+ rescue CodeAlreadyRegistered
11
+ retry
15
12
  end
16
13
 
17
- def codes_not_in_sequence
18
- previous_id = nil
19
-
20
- codes_as_ids.inject([]) do |acc, id|
21
- if !previous_id || previous_id + 1 == id
22
- previous_id = id
23
- acc
24
- else
25
- acc << [previous_id, id]
26
- previous_id = id
27
- acc
28
- end
29
- end
30
- end
14
+ def generate_next_code
15
+ new_code = SecureRandom.uuid
16
+ return new_code unless registered_codes.include?(new_code)
31
17
 
32
- def codes_as_ids
33
- registry.codes.map { |code| Integer(code.delete('.')) }.sort
18
+ raise CodeAlreadyRegistered, "#{new_code} already registered"
34
19
  end
35
20
 
36
- def id_to_code(code)
37
- "#{code.to_s[0..2]}.#{code.to_s[3..-1]}"
21
+ def registered_codes
22
+ registry.codes
38
23
  end
39
24
 
40
25
  def registry
41
26
  NxtErrorRegistry::Registry.instance
42
27
  end
43
28
  end
44
- end
29
+ end
@@ -3,7 +3,8 @@ module NxtErrorRegistry
3
3
  CodeAlreadyTakenError = Class.new(StandardError)
4
4
  InvalidCodeFormatError = Class.new(StandardError)
5
5
 
6
- FORMAT = /\A\d{3}\.\d{3}\z/
6
+ LEGACY_FORMAT = /\A\d{3}\.\d{3}\z/
7
+ FORMAT = /\A[a-zA-Z0-9-]{36}|#{LEGACY_FORMAT}\z/
7
8
 
8
9
  def initialize(name, type, code, context)
9
10
  @name = name
@@ -25,11 +26,12 @@ module NxtErrorRegistry
25
26
 
26
27
  def validate_code_format
27
28
  return if code =~ FORMAT
29
+
28
30
  raise InvalidCodeFormatError, "Code #{code} for name #{name} violates format #{FORMAT} in context: #{context}"
29
31
  end
30
32
 
31
33
  def validate_code_uniqueness
32
- duplicates = registry.duplicate_codes
34
+ duplicates = registry.duplicated_codes
33
35
  return if duplicates.empty?
34
36
 
35
37
  raise CodeAlreadyTakenError, "The following codes are duplicated: #{duplicates.keys.join(',')}"
@@ -39,4 +41,4 @@ module NxtErrorRegistry
39
41
  NxtErrorRegistry::Registry.instance
40
42
  end
41
43
  end
42
- end
44
+ end
@@ -32,8 +32,8 @@ module NxtErrorRegistry
32
32
  end
33
33
  end
34
34
 
35
- def duplicate_codes
35
+ def duplicated_codes
36
36
  entries_by_codes.select { |_, v| v.size > 1 }
37
37
  end
38
38
  end
39
- end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module NxtErrorRegistry
2
- VERSION = "0.1.4".freeze
2
+ VERSION = "0.2.5".freeze
3
3
  end
@@ -22,6 +22,10 @@ module NxtErrorRegistry
22
22
  end
23
23
 
24
24
  const_set(name, error_class)
25
+ # Calling `delegate` before `const_set` would rip off the modules from the error class.
26
+ # e.g. `Module1::Module2::MyError` would become `MyError`.
27
+ error_class.delegate :code, to: :class
28
+
25
29
  entry = { code: code, error_class: error_class, type: type, name: name, namespace: self.to_s, opts: opts }
26
30
  error_registry[name.to_s] = entry
27
31
 
@@ -5,11 +5,10 @@ require "nxt_error_registry/version"
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "nxt_error_registry"
7
7
  spec.version = NxtErrorRegistry::VERSION
8
- spec.authors = ["Andreas Robecke", "Nils Sommer", "Raphael Kallensee"]
8
+ spec.authors = ["Andreas Robecke", "Nils Sommer", "Raphael Kallensee", "Akihiko Ito"]
9
9
  spec.email = ["a.robecke@getsafe.de"]
10
10
 
11
- spec.summary = %q{Write a short summary, because RubyGems requires one.}
12
- spec.description = %q{Write a longer description or delete this line.}
11
+ spec.summary = %q{Registry to register errors with unique codes and more.}
13
12
  spec.homepage = "https://github.com/nxt-insurance"
14
13
  spec.license = "MIT"
15
14
 
@@ -20,6 +19,7 @@ Gem::Specification.new do |spec|
20
19
 
21
20
  spec.metadata["homepage_uri"] = spec.homepage
22
21
  spec.metadata["source_code_uri"] = "https://github.com/nxt-insurance/nxt_error_registry"
22
+ spec.metadata["changelog_uri"] = "https://github.com/nxt-insurance/nxt_error_registry/CHANGELOG.md"
23
23
  else
24
24
  raise "RubyGems 2.0 or newer is required to protect against " \
25
25
  "public gem pushes."
@@ -37,8 +37,8 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency "bundler", "~> 2.0"
38
38
  spec.add_development_dependency "rake", "~> 13.0"
39
39
  spec.add_development_dependency "rspec", "~> 3.0"
40
- spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
40
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.5.1"
41
41
  spec.add_development_dependency "pry"
42
- spec.add_dependency "activesupport", "< 6.1"
43
- spec.add_dependency "rails", "< 6.1"
42
+ spec.add_dependency 'activesupport', '< 8.0'
43
+ spec.add_dependency "railties", "< 8.0"
44
44
  end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nxt_error_registry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Robecke
8
8
  - Nils Sommer
9
9
  - Raphael Kallensee
10
+ - Akihiko Ito
10
11
  autorequire:
11
12
  bindir: exe
12
13
  cert_chain: []
13
- date: 2020-03-02 00:00:00.000000000 Z
14
+ date: 2022-01-27 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: bundler
@@ -60,14 +61,14 @@ dependencies:
60
61
  requirements:
61
62
  - - "~>"
62
63
  - !ruby/object:Gem::Version
63
- version: 0.4.1
64
+ version: 0.5.1
64
65
  type: :development
65
66
  prerelease: false
66
67
  version_requirements: !ruby/object:Gem::Requirement
67
68
  requirements:
68
69
  - - "~>"
69
70
  - !ruby/object:Gem::Version
70
- version: 0.4.1
71
+ version: 0.5.1
71
72
  - !ruby/object:Gem::Dependency
72
73
  name: pry
73
74
  requirement: !ruby/object:Gem::Requirement
@@ -88,29 +89,29 @@ dependencies:
88
89
  requirements:
89
90
  - - "<"
90
91
  - !ruby/object:Gem::Version
91
- version: '6.1'
92
+ version: '8.0'
92
93
  type: :runtime
93
94
  prerelease: false
94
95
  version_requirements: !ruby/object:Gem::Requirement
95
96
  requirements:
96
97
  - - "<"
97
98
  - !ruby/object:Gem::Version
98
- version: '6.1'
99
+ version: '8.0'
99
100
  - !ruby/object:Gem::Dependency
100
- name: rails
101
+ name: railties
101
102
  requirement: !ruby/object:Gem::Requirement
102
103
  requirements:
103
104
  - - "<"
104
105
  - !ruby/object:Gem::Version
105
- version: '6.1'
106
+ version: '8.0'
106
107
  type: :runtime
107
108
  prerelease: false
108
109
  version_requirements: !ruby/object:Gem::Requirement
109
110
  requirements:
110
111
  - - "<"
111
112
  - !ruby/object:Gem::Version
112
- version: '6.1'
113
- description: Write a longer description or delete this line.
113
+ version: '8.0'
114
+ description:
114
115
  email:
115
116
  - a.robecke@getsafe.de
116
117
  executables: []
@@ -121,6 +122,7 @@ files:
121
122
  - ".gitignore"
122
123
  - ".rspec"
123
124
  - ".ruby-version"
125
+ - CHANGELOG.md
124
126
  - Gemfile
125
127
  - Gemfile.lock
126
128
  - LICENSE.txt
@@ -144,6 +146,7 @@ metadata:
144
146
  allowed_push_host: https://rubygems.org
145
147
  homepage_uri: https://github.com/nxt-insurance
146
148
  source_code_uri: https://github.com/nxt-insurance/nxt_error_registry
149
+ changelog_uri: https://github.com/nxt-insurance/nxt_error_registry/CHANGELOG.md
147
150
  post_install_message:
148
151
  rdoc_options: []
149
152
  require_paths:
@@ -159,8 +162,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
162
  - !ruby/object:Gem::Version
160
163
  version: '0'
161
164
  requirements: []
162
- rubygems_version: 3.0.3
165
+ rubygems_version: 3.1.4
163
166
  signing_key:
164
167
  specification_version: 4
165
- summary: Write a short summary, because RubyGems requires one.
168
+ summary: Registry to register errors with unique codes and more.
166
169
  test_files: []