erratum 3.3.0 → 4.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3e6c5faf31997ee03d768c4550dbb14d18e7aaa603071bc4cb49f2224fc42e7
4
- data.tar.gz: bd9de11bb451c959ae4de0717f4ad29691bb72a092111180bda53b78e138d3fc
3
+ metadata.gz: 97d95100468476620622a7be9cf70e486922fc3f29a8054a5bda626c9859c1e5
4
+ data.tar.gz: 46757dc475658d01525ce9e2ec4c9581c907aa3ae7edf5102ebab271a87b22a4
5
5
  SHA512:
6
- metadata.gz: f7073c9d975cb2de901082f0b2d64f1d2068ba19d2c9e1a9505ba07ae348e7057848e0964d50ded7c1d55bb8fb3ff6447de567a347e6541c63cd57fb77bdf4ab
7
- data.tar.gz: 5a18d081d56259c87a948a207c29d4952f82426f2dd615deca753900dc077ff19726b8cddbe2fc453d4502f6ceadbac841aba94f5ed6853c4008da7022fe0f15
6
+ metadata.gz: 0d637d1a2d25d501ccef7c321a3a3d9c27624c4b265a213c53cd20061afae155cce0f87be1772dfdf63125b57a39923b6df4a9e01cbaad8bb6d63310e0ee14c0
7
+ data.tar.gz: eb367c1ad645b49498e8ca870c452dd32d58fd04bc2cc65d01b1267a8ddf7bad4b61883f58849bca66c31f85fa964aba338ad53c73df0cc213a91d3d99012941
checksums.yaml.gz.sig CHANGED
Binary file
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2016 The Kompanee, Ltd
1
+ Copyright (c) 2010-2019 The Kompanee, Ltd
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
data/lib/erratum/error.rb CHANGED
@@ -74,7 +74,7 @@ module Error
74
74
  @code ||= self.class.name
75
75
  .underscore
76
76
  .gsub(%r{\A[^/]+/}, '')
77
- .gsub(%r{/}, '.')
77
+ .tr('/', '.')
78
78
  end
79
79
 
80
80
  def title
@@ -31,7 +31,7 @@ class AttributeLength < RuntimeError
31
31
  length: message_info[0],
32
32
  }
33
33
 
34
- new(initialization_parameters.merge(overrides))
34
+ new(**initialization_parameters.merge(overrides))
35
35
  end
36
36
  end
37
37
 
@@ -51,11 +51,11 @@ class AttributeLength < RuntimeError
51
51
  end
52
52
 
53
53
  def source
54
- {
54
+ super.merge(
55
55
  'pointer' => pointer,
56
56
  'parameter' => attribute,
57
57
  'length' => length,
58
- }
58
+ )
59
59
  end
60
60
  end
61
61
  end
@@ -10,18 +10,18 @@ class InvalidAssociation < RuntimeError
10
10
  include Errors::Crud
11
11
 
12
12
  attr_accessor :association_name,
13
- :association_id,
14
- :attributes
13
+ :association_id
15
14
 
16
15
  def self.convert(original_error, overrides = {})
17
16
  initialization_parameters = {}
18
17
 
19
18
  case original_error.class.name
20
19
  when 'ActiveRecord::InvalidForeignKey'
21
- message_info_pattern = /DETAIL: Key \((.*)_id\)=\(([a-f0-9\-]+)\)/
20
+ message_info_pattern = /DETAIL: Key \((.*?)(?:_id)?\)=\(([a-f0-9\-]+)\)/
22
21
  message_info = original_error
23
22
  .message
24
- .match(message_info_pattern)[1..-1]
23
+ .match(message_info_pattern)
24
+ .captures
25
25
 
26
26
  initialization_parameters = {
27
27
  association_name: message_info[0],
@@ -29,7 +29,7 @@ class InvalidAssociation < RuntimeError
29
29
  }
30
30
  end
31
31
 
32
- new(initialization_parameters.merge(overrides))
32
+ new(**initialization_parameters.merge(overrides))
33
33
  end
34
34
 
35
35
  def http_status
@@ -41,17 +41,24 @@ class InvalidAssociation < RuntimeError
41
41
  end
42
42
 
43
43
  def detail
44
- <<~HEREDOC.chomp.tr("\n", ' ')
45
- The #{association_name} that you attempted to associate with the
46
- #{resource_name} was not valid.
47
- HEREDOC
44
+ if association_name == 'id'
45
+ <<~HEREDOC.chomp.tr("\n", ' ')
46
+ You cannot #{action} this #{resource_name} because its
47
+ #{association_name} is still being referenced by other things.
48
+ HEREDOC
49
+ else
50
+ <<~HEREDOC.chomp.tr("\n", ' ')
51
+ The #{association_name} that you attempted to associate with the
52
+ #{resource_name} was not valid.
53
+ HEREDOC
54
+ end
48
55
  end
49
56
 
50
57
  def source
51
- {
52
- resource_name => attributes,
53
- "#{association_name} id" => association_id,
54
- }
58
+ super.merge(
59
+ 'association' => association_name,
60
+ 'association_id' => association_id,
61
+ )
55
62
  end
56
63
  end
57
64
  end
@@ -9,24 +9,26 @@ class ResourceNotFound < RuntimeError
9
9
  include Error
10
10
  include Errors::Crud
11
11
 
12
+ attr_accessor :missing_ids
13
+
12
14
  def self.convert(original_error, overrides = {})
13
15
  initialization_parameters = {}
14
16
 
15
17
  case original_error.class.name
16
18
  when 'ActiveRecord::RecordNotFound'
17
19
  initialization_parameters = {
18
- resource_id: case original_error.message
20
+ missing_ids: case original_error.message
19
21
  when /\ACouldn't find .* without an ID\z/
20
22
  []
21
- when /\ACouldn't find .* with \'.*\'=([a-f0-9\-]+)/
23
+ when /\ACouldn't find .* with '.*'=([a-f0-9\-]+)/
22
24
  [Regexp.last_match(1)]
23
- when /\ACouldn't find all .* with \'.*\': ((?:[a-f0-9\-]+(?:, )?)+)/
25
+ when /\ACouldn't find all .* with '.*': ((?:[a-f0-9\-]+(?:, )?)+)/
24
26
  Array(Regexp.last_match(1).split(', '))
25
27
  end,
26
28
  }
27
29
  end
28
30
 
29
- new(initialization_parameters.merge(overrides))
31
+ new(**initialization_parameters.merge(overrides))
30
32
  end
31
33
 
32
34
  def http_status
@@ -45,7 +47,9 @@ class ResourceNotFound < RuntimeError
45
47
  end
46
48
 
47
49
  def source
48
- { "#{resource_name_underscored}_id" => resource_id }
50
+ super.merge(
51
+ 'missing_ids' => missing_ids,
52
+ )
49
53
  end
50
54
 
51
55
  def action
@@ -31,7 +31,7 @@ class ResourceNotUnique < RuntimeError
31
31
  value: message_info[1],
32
32
  }
33
33
 
34
- new(initialization_parameters.merge(overrides))
34
+ new(**initialization_parameters.merge(overrides))
35
35
  end
36
36
  end
37
37
 
@@ -50,11 +50,11 @@ class ResourceNotUnique < RuntimeError
50
50
  end
51
51
 
52
52
  def source
53
- {
53
+ super.merge(
54
54
  'pointer' => pointer,
55
55
  'parameter' => attribute,
56
56
  'value' => value,
57
- }
57
+ )
58
58
  end
59
59
  end
60
60
  end
@@ -16,32 +16,32 @@ class ResourcePersistence < RuntimeError
16
16
  :attribute,
17
17
  :value
18
18
 
19
- def self.convert(original_error, overrides = {})
19
+ def self.convert(original_error, overrides = {}) # rubocop:disable Metrics/AbcSize
20
20
  case original_error.class.name
21
21
  when 'ActiveRecord::RecordInvalid',
22
22
  'ActiveRecord::RecordNotSaved'
23
23
 
24
- original_error.record.errors.each_with_object([]) do |(attribute, error), errors|
25
- initialization_parameters = if attribute == :base
24
+ original_error.record.errors.each_with_object([]) do |error, errors|
25
+ initialization_parameters = if error.attribute == :base
26
26
  {
27
27
  attribute: nil,
28
- detail: error.to_s,
28
+ detail: error.message,
29
29
  pointer: '/data/base',
30
30
  value: nil,
31
31
  }
32
32
  else
33
33
  {
34
- attribute: attribute.to_s.camelize(:lower),
35
- detail: "#{attribute.to_s.humanize} #{error}",
36
- pointer: "/data/attributes/#{attribute}",
34
+ attribute: error.attribute.to_s.camelize(:lower),
35
+ detail: "#{error.class.name}: #{error.attribute.to_s.humanize} #{error.message}",
36
+ pointer: "/data/attributes/#{error.attribute}",
37
37
  value: original_error
38
38
  .record
39
- .public_send(attribute)
39
+ .public_send(error.attribute)
40
40
  .to_s,
41
41
  }
42
42
  end
43
43
 
44
- errors << new(initialization_parameters.merge(overrides))
44
+ errors << new(**initialization_parameters.merge(overrides))
45
45
  end
46
46
  end
47
47
  end
@@ -62,11 +62,11 @@ class ResourcePersistence < RuntimeError
62
62
  end
63
63
 
64
64
  def source
65
- {
65
+ super.merge(
66
66
  'pointer' => pointer,
67
67
  'parameter' => attribute,
68
68
  'value' => value,
69
- }
69
+ )
70
70
  end
71
71
  end
72
72
  end
@@ -15,10 +15,18 @@ module Crud
15
15
  super(**args)
16
16
  end
17
17
 
18
+ def source
19
+ {
20
+ 'action' => action,
21
+ 'resource_name' => resource_name_underscored,
22
+ 'resource_id' => resource_id,
23
+ }
24
+ end
25
+
18
26
  private
19
27
 
20
28
  def resource_name_underscored
21
- @resource_name_underscored ||= resource_name.gsub(/\s/, '_')
29
+ @resource_name_underscored ||= resource_name&.gsub(/\s/, '_')
22
30
  end
23
31
  end
24
32
  end
@@ -21,7 +21,7 @@ class ParameterMissing < RuntimeError
21
21
  }
22
22
  end
23
23
 
24
- new(initialization_parameters.merge(overrides))
24
+ new(**initialization_parameters.merge(overrides))
25
25
  end
26
26
 
27
27
  def http_status
@@ -40,9 +40,9 @@ class ParameterMissing < RuntimeError
40
40
  end
41
41
 
42
42
  def source
43
- {
43
+ super.merge(
44
44
  'required_parameter' => parameter,
45
- }
45
+ )
46
46
  end
47
47
  end
48
48
  end
@@ -21,7 +21,7 @@ class UnpermittedParameters < RuntimeError
21
21
  }
22
22
  end
23
23
 
24
- new(initialization_parameters.merge(overrides))
24
+ new(**initialization_parameters.merge(overrides))
25
25
  end
26
26
 
27
27
  def initialize(**attrs)
@@ -40,13 +40,13 @@ class UnpermittedParameters < RuntimeError
40
40
 
41
41
  def detail
42
42
  "Attempting to #{action} a #{resource_name} with the following parameters is " \
43
- "not allowed: #{parameters.join(', ')}"
43
+ "not allowed: #{parameters.join(', ')}"
44
44
  end
45
45
 
46
46
  def source
47
- {
47
+ super.merge(
48
48
  'unpermitted_parameters' => parameters,
49
- }
49
+ )
50
50
  end
51
51
  end
52
52
  end
@@ -4,7 +4,7 @@ require 'apple_core/action_controller/resource_naming'
4
4
 
5
5
  module Erratum
6
6
  module RescuableResource
7
- def self.included(base)
7
+ def self.included(base) # rubocop:disable Metrics/AbcSize
8
8
  base.include ::AppleCore::ActionController::ResourceNaming
9
9
 
10
10
  base.rescue_from 'ActiveRecord::RecordInvalid',
@@ -15,23 +15,23 @@ module RescuableResource
15
15
  'ActiveRecord::ValueTooLong',
16
16
  'ActionController::ParameterMissing',
17
17
  'ActionController::UnpermittedParameters' do |exception|
18
-
19
18
  erratum = Array(
20
19
  Erratum.build(
21
20
  exception,
22
21
  resource_name: self.class.singular_underscored_base_resource_name,
22
+ resource_id: params[:id],
23
23
  action: action_name,
24
24
  ),
25
25
  )
26
26
 
27
- render json: Hash['errors' => erratum.as_json],
27
+ render json: { 'errors' => erratum.as_json },
28
28
  status: erratum.first.http_status
29
29
  end
30
30
 
31
31
  base.rescue_from 'Erratum::Error' do |exception|
32
32
  exception = Array(exception)
33
33
 
34
- render json: Hash['errors' => exception.as_json],
34
+ render json: { 'errors' => exception.as_json },
35
35
  status: exception.first.http_status
36
36
  end
37
37
  end
@@ -8,14 +8,19 @@ module VerifiableResource
8
8
  base.include ::AppleCore::ActionController::ResourceNaming
9
9
 
10
10
  base.before_action except: %i{index create} do
11
- model = public_send(self.class.singular_underscored_base_resource_name)
11
+ base_name = self.class.singular_underscored_base_resource_name
12
+ model = if respond_to?(:authorized_resource, true)
13
+ authorized_resource.processed
14
+ else
15
+ public_send(base_name)
16
+ end
12
17
 
13
18
  resource_not_found_error = Erratum.build(
14
- 'ResourceNotFound',
15
- resource_name: self.class.singular_underscored_base_resource_name,
16
- resource_id: [params[:id]],
17
- action: action_name,
18
- )
19
+ 'ResourceNotFound',
20
+ resource_name: base_name,
21
+ resource_id: [params[:id]],
22
+ action: action_name,
23
+ )
19
24
 
20
25
  fail resource_not_found_error unless model.persisted?
21
26
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Erratum
4
- VERSION = '3.3.0'
4
+ VERSION = '4.0.0'
5
5
  end
data/lib/erratum.rb CHANGED
@@ -26,8 +26,7 @@ require 'erratum/version'
26
26
  module Erratum
27
27
  using ::AppleCore::Refinements::Hash
28
28
 
29
- # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
30
- def self.build(original_error, overrides = {})
29
+ def self.build(original_error, overrides = {}) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
31
30
  overrides = overrides.symbolize_keys
32
31
  original_error_name = error_name(original_error)
33
32
  build_error_name = mapped_error_name(original_error_name)
@@ -36,17 +35,18 @@ module Erratum
36
35
  if original_error.is_a?(Class) &&
37
36
  original_error < ::Erratum::Error
38
37
 
39
- original_error.new(overrides)
38
+ original_error.new(**overrides)
40
39
  elsif original_error.is_a?(String)
41
- build_error_class.new(overrides)
40
+ build_error_class.new(**overrides)
42
41
  elsif original_error.is_a?(::Erratum::Error)
43
42
  original_source = original_error.source.symbolize_keys
44
43
 
45
- build_error_class.new(original_source.merge(overrides))
44
+ build_error_class.new(**original_source.merge(overrides))
46
45
  elsif build_error_class.respond_to?(:convert)
47
- build_error_class.convert(original_error, overrides)
46
+ build_error_class.convert(original_error, **overrides)
48
47
  elsif build_error_class < Exception &&
49
48
  build_error_class == original_error.class
49
+
50
50
  ::Erratum::Errors::RuntimeError.wrap(original_error)
51
51
  else
52
52
  ::Erratum::Errors::RuntimeError.new(
@@ -54,7 +54,6 @@ module Erratum
54
54
  )
55
55
  end
56
56
  end
57
- # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
58
57
 
59
58
  def self.raise(error_type, **args)
60
59
  Kernel.fail build(error_type, **args)
@@ -67,9 +66,10 @@ module Erratum
67
66
  alias fail raise
68
67
 
69
68
  def self.error_name(error)
70
- if error.is_a?(String)
71
- error.gsub(/\A::/, '')
72
- elsif error.is_a? Class
69
+ case error
70
+ when String
71
+ error.delete_prefix('::')
72
+ when Class
73
73
  error.name
74
74
  else
75
75
  error.class.name
@@ -80,7 +80,7 @@ module Erratum
80
80
  configuration
81
81
  .error_mappings
82
82
  .fetch(name, name)
83
- .gsub(/\A::/, '')
83
+ .delete_prefix('::')
84
84
  end
85
85
 
86
86
  def self.error_class(name)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erratum
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thegranddesign
@@ -10,117 +10,137 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBNMREwDwYDVQQDDAhydWJ5
14
- Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hvbnRoZWJsb2cxEzARBgoJ
15
- kiaJk/IsZAEZFgNjb20wHhcNMTcwODAyMjI1OTM1WhcNMTgwODAyMjI1OTM1WjBN
16
- MREwDwYDVQQDDAhydWJ5Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hv
17
- bnRoZWJsb2cxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUA
18
- A4IBDwAwggEKAoIBAQDtLa7+7p49gW15OgOyRZad/F92iZcMdDjZ2kAxZlviXgVe
19
- PCtjfdURobH+YMdt++6eRkE25utIFqHyN51Shxfdc21T3fPQe/ZEoMyiJK4tYzbh
20
- 7VjNJG4ldvKKpS1p7iVz9imnyTxNwb0JaIOsOFCA04T0u6aCQi2acNvAPLviXk0q
21
- xJ/CKjI4QUTZKVrBt8Q1Egrp2yzmEnSNftDuTbBb8m4vDR+w325CwbKCgycHJ1/g
22
- YZ3FO76TzJuRVbsYS/bU5XKHVEpkeFmWBqEXsk4DuUIWLa6WZEJcoZf+YP+1pycG
23
- 7YqSbydpINtEdopD+EEI+g+zNJ4nSI8/eQcQyEjBAgMBAAGjgZQwgZEwCQYDVR0T
24
- BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFDWuVrg4ve0vLu71kqiGdyBnzJGV
25
- MCsGA1UdEQQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMCsG
26
- A1UdEgQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMA0GCSqG
27
- SIb3DQEBBQUAA4IBAQDJIpHjbBPGiaY4wOHcXlltQ+BMmhWQNh+1fZtyajQd+7Ay
28
- fv23mO7Mf25Q38gopQlpaODkfxq54Jt8FvQbr5RYRS4j+JEKb75NgrAtehd8USUd
29
- CiJJGH+yvGNWug9IGZCGX91HIbTsLQ5IUUWQasC5jGP8nxXufUr9xgAJZZenewny
30
- B2qKu8q1A/kj6cw62RCY7yBmUXxlcJBj8g+JKYAFbYYKUdQSzf50k9IiWLWunJM+
31
- Y2GAoHKstmfIVhc4XHOPpmTd2o/C29O9oaRgjrkfQEhF/KvJ/PhoV5hvokzsCyI5
32
- iUeXPfvrGD/itYIBCgk+fnzyQQ4QtE5hTQaWQ3o2
13
+ MIIEyjCCAzKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBVMSIwIAYDVQQDDBlsb2Nh
14
+ bGV1bmtub3duODEwX3J1YnlnZW1zMRowGAYKCZImiZPyLGQBGRYKcHJvdG9ubWFp
15
+ bDETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0yMjA3MDkwNTMxMjJaFw0yMzA3MDkw
16
+ NTMxMjJaMFUxIjAgBgNVBAMMGWxvY2FsZXVua25vd244MTBfcnVieWdlbXMxGjAY
17
+ BgoJkiaJk/IsZAEZFgpwcm90b25tYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
18
+ ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0otlhSPyU7jLLW1p786Mo/pV
19
+ 5cJ1Ed8D/bJK78PqGFO2h0ZUefupxT5PRMokLYNNGRPopnAAxZ0zVxJ68aOyYCBW
20
+ Wk3/XFcXCrtk/OcFwLTltgeMjyqCBd/zRRx6CCjY4uOfH0E3n1gQ6Fbmewjg83XJ
21
+ nOs7Gu/hzj5+feEQ1Exmg6z1oCM/8BTIBtK+p++HvcDK3AhJ7x3fc6P9WS+22w6j
22
+ 7jpi3p9YtoAjrXIzw3lsobiX+bEt+N+T47e8gOATVgapuZ/QmJzNU6LWepehs4V1
23
+ 8J+FUaIMV7nAMKmpkbYL51uHEiGV+HDx1HUdOsCFx8zD4h49KRT2t6AcumJ5P1Cj
24
+ c7NX2xl85ShHDNNFkozuC2c5cwj6F20EVaVjGwv2OFq0S2tUw9EJXHTN9RpfRUmn
25
+ IHwS9M4gcJO7IzV39a1YL6+9hrabF4+JTSYDehq8oxTdcOPLYyvH54aJWVqCrnLO
26
+ KNa/p6hMmwxTWNS5Vz0uxuEGyE9E0tHbtjIs2XX5AgMBAAGjgaQwgaEwCQYDVR0T
27
+ BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAK3RicwO0f6+puFN6lRVMOKMJuu
28
+ MDMGA1UdEQQsMCqBKGxvY2FsZXVua25vd244MTArcnVieWdlbXNAcHJvdG9ubWFp
29
+ bC5jb20wMwYDVR0SBCwwKoEobG9jYWxldW5rbm93bjgxMCtydWJ5Z2Vtc0Bwcm90
30
+ b25tYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAQwV6pOp5gm8141pyXeQFI/5E
31
+ rZYO3MvdyZM8O3HMD51LDS8mtMURceaKZM6WTambe2RVX4A++0qUiEnn9K4Fexm/
32
+ SEGaC/Gp+Fg9D1SKfkdq9bgdIhOEUwiGqjczgzNC806AtWZ+awI940oydFYZlpo0
33
+ jMQihPPJEqF1U6JBDMZYV5tX/dJYSGRl9L3s1k2tjoN98q+beNaZQDn21Amml4eK
34
+ KEkMeTTJ2E4GVzR9eKEETLq2LygdUWWZ5NdWOYTxJMdg1GZp3b6X8hJrwfOiizqt
35
+ /ANlIEh11/pOnWa6WPUVpGIMpYdquvmJXnF2LX6zxkKK1hbrebt+vAEAGczgw1Ri
36
+ rkLM6y+BHQdkOTj3VG4MjIU8D4h1Z73Exzxds/VbVKMEz+8JrFjGJ/tYa0PZ8U5p
37
+ 3yXL4G6eW3rdBW/OiLF7GgG2o26d02OMzf4+ubUVS5LQDOcd4vgNPLWzJSBt1YIh
38
+ TgBsED7Me5YdMVXxtTWYsF1VMzaL9hReD3UXGcxe
33
39
  -----END CERTIFICATE-----
34
- date: 2018-05-26 00:00:00.000000000 Z
40
+ date: 2022-07-09 00:00:00.000000000 Z
35
41
  dependencies:
36
42
  - !ruby/object:Gem::Dependency
37
43
  name: apple_core
38
44
  requirement: !ruby/object:Gem::Requirement
39
45
  requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.0'
40
49
  - - ">="
41
50
  - !ruby/object:Gem::Version
42
51
  version: 1.3.1
52
+ type: :runtime
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
43
56
  - - "~>"
44
57
  - !ruby/object:Gem::Version
45
58
  version: '1.0'
46
- type: :runtime
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.1
62
+ - !ruby/object:Gem::Dependency
63
+ name: actionpack
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '7.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '8.0'
72
+ type: :development
47
73
  prerelease: false
48
74
  version_requirements: !ruby/object:Gem::Requirement
49
75
  requirements:
50
76
  - - ">="
51
77
  - !ruby/object:Gem::Version
52
- version: 1.3.1
53
- - - "~>"
78
+ version: '7.0'
79
+ - - "<"
54
80
  - !ruby/object:Gem::Version
55
- version: '1.0'
81
+ version: '8.0'
56
82
  - !ruby/object:Gem::Dependency
57
- name: rspec
83
+ name: activerecord
58
84
  requirement: !ruby/object:Gem::Requirement
59
85
  requirements:
60
- - - "~>"
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '7.0'
89
+ - - "<"
61
90
  - !ruby/object:Gem::Version
62
- version: '3.7'
91
+ version: '8.0'
63
92
  type: :development
64
93
  prerelease: false
65
94
  version_requirements: !ruby/object:Gem::Requirement
66
95
  requirements:
67
- - - "~>"
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '7.0'
99
+ - - "<"
68
100
  - !ruby/object:Gem::Version
69
- version: '3.7'
101
+ version: '8.0'
70
102
  - !ruby/object:Gem::Dependency
71
- name: rspeckled
103
+ name: byebug
72
104
  requirement: !ruby/object:Gem::Requirement
73
105
  requirements:
74
106
  - - "~>"
75
107
  - !ruby/object:Gem::Version
76
- version: '0.0'
108
+ version: '11.1'
77
109
  type: :development
78
110
  prerelease: false
79
111
  version_requirements: !ruby/object:Gem::Requirement
80
112
  requirements:
81
113
  - - "~>"
82
114
  - !ruby/object:Gem::Version
83
- version: '0.0'
115
+ version: '11.1'
84
116
  - !ruby/object:Gem::Dependency
85
- name: activerecord
117
+ name: rspec
86
118
  requirement: !ruby/object:Gem::Requirement
87
119
  requirements:
88
- - - "<"
89
- - !ruby/object:Gem::Version
90
- version: '6.0'
91
- - - ">="
120
+ - - "~>"
92
121
  - !ruby/object:Gem::Version
93
- version: '4.2'
122
+ version: '3.11'
94
123
  type: :development
95
124
  prerelease: false
96
125
  version_requirements: !ruby/object:Gem::Requirement
97
126
  requirements:
98
- - - "<"
99
- - !ruby/object:Gem::Version
100
- version: '6.0'
101
- - - ">="
127
+ - - "~>"
102
128
  - !ruby/object:Gem::Version
103
- version: '4.2'
129
+ version: '3.11'
104
130
  - !ruby/object:Gem::Dependency
105
- name: actionpack
131
+ name: rspeckled
106
132
  requirement: !ruby/object:Gem::Requirement
107
133
  requirements:
108
- - - "<"
109
- - !ruby/object:Gem::Version
110
- version: '6.0'
111
- - - ">="
134
+ - - "~>"
112
135
  - !ruby/object:Gem::Version
113
- version: '4.2'
136
+ version: '0.0'
114
137
  type: :development
115
138
  prerelease: false
116
139
  version_requirements: !ruby/object:Gem::Requirement
117
140
  requirements:
118
- - - "<"
119
- - !ruby/object:Gem::Version
120
- version: '6.0'
121
- - - ">="
141
+ - - "~>"
122
142
  - !ruby/object:Gem::Version
123
- version: '4.2'
143
+ version: '0.0'
124
144
  description: ''
125
145
  email:
126
146
  - rubygems@livinghighontheblog.com
@@ -152,11 +172,18 @@ files:
152
172
  - lib/erratum/rescuable_resource.rb
153
173
  - lib/erratum/verifiable_resource.rb
154
174
  - lib/erratum/version.rb
155
- homepage: https://example.com
175
+ homepage: https://github.com/thekompanee/erratum
156
176
  licenses:
157
177
  - MIT
158
178
  metadata:
159
179
  allowed_push_host: https://rubygems.org
180
+ bug_tracker_uri: https://github.com/thekompanee/erratum/issues
181
+ changelog_uri: https://github.com/thekompanee/erratum/blob/master/CHANGELOG.md
182
+ documentation_uri: https://github.com/thekompanee/erratum/tree/releases/v4.0.0
183
+ homepage_uri: https://github.com/thekompanee/erratum
184
+ source_code_uri: https://github.com/thekompanee/erratum
185
+ wiki_uri: https://github.com/thekompanee/erratum/wiki
186
+ rubygems_mfa_required: 'true'
160
187
  post_install_message:
161
188
  rdoc_options: []
162
189
  require_paths:
@@ -172,8 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
199
  - !ruby/object:Gem::Version
173
200
  version: '0'
174
201
  requirements: []
175
- rubyforge_project:
176
- rubygems_version: 2.7.6
202
+ rubygems_version: 3.3.7
177
203
  signing_key:
178
204
  specification_version: 4
179
205
  summary: Errors Need Love
metadata.gz.sig CHANGED
Binary file