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 +4 -4
 - checksums.yaml.gz.sig +0 -0
 - data/LICENSE.txt +1 -1
 - data/lib/erratum/error.rb +1 -1
 - data/lib/erratum/errors/crud/attribute_length.rb +3 -3
 - data/lib/erratum/errors/crud/invalid_association.rb +20 -13
 - data/lib/erratum/errors/crud/resource_not_found.rb +9 -5
 - data/lib/erratum/errors/crud/resource_not_unique.rb +3 -3
 - data/lib/erratum/errors/crud/resource_persistence.rb +11 -11
 - data/lib/erratum/errors/crud.rb +9 -1
 - data/lib/erratum/errors/request/parameter_missing.rb +3 -3
 - data/lib/erratum/errors/request/unpermitted_parameters.rb +4 -4
 - data/lib/erratum/rescuable_resource.rb +4 -4
 - data/lib/erratum/verifiable_resource.rb +11 -6
 - data/lib/erratum/version.rb +1 -1
 - data/lib/erratum.rb +11 -11
 - data.tar.gz.sig +0 -0
 - metadata +85 -59
 - metadata.gz.sig +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 97d95100468476620622a7be9cf70e486922fc3f29a8054a5bda626c9859c1e5
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 46757dc475658d01525ce9e2ec4c9581c907aa3ae7edf5102ebab271a87b22a4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 0d637d1a2d25d501ccef7c321a3a3d9c27624c4b265a213c53cd20061afae155cce0f87be1772dfdf63125b57a39923b6df4a9e01cbaad8bb6d63310e0ee14c0
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: eb367c1ad645b49498e8ca870c452dd32d58fd04bc2cc65d01b1267a8ddf7bad4b61883f58849bca66c31f85fa964aba338ad53c73df0cc213a91d3d99012941
         
     | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/LICENSE.txt
    CHANGED
    
    
    
        data/lib/erratum/error.rb
    CHANGED
    
    
| 
         @@ -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 \(( 
     | 
| 
      
 20 
     | 
    
         
            +
                  message_info_pattern = /DETAIL:  Key \((.*?)(?:_id)?\)=\(([a-f0-9\-]+)\)/
         
     | 
| 
       22 
21 
     | 
    
         
             
                  message_info         = original_error
         
     | 
| 
       23 
22 
     | 
    
         
             
                                           .message
         
     | 
| 
       24 
     | 
    
         
            -
                                           .match(message_info_pattern) 
     | 
| 
      
 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 
     | 
    
         
            -
                 
     | 
| 
       45 
     | 
    
         
            -
                   
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
       53 
     | 
    
         
            -
                   
     | 
| 
       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 
     | 
    
         
            -
                     
     | 
| 
      
 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  
     | 
| 
      
 23 
     | 
    
         
            +
                                 when /\ACouldn't find .* with '.*'=([a-f0-9\-]+)/
         
     | 
| 
       22 
24 
     | 
    
         
             
                                   [Regexp.last_match(1)]
         
     | 
| 
       23 
     | 
    
         
            -
                                 when /\ACouldn't find all .* with  
     | 
| 
      
 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 
     | 
    
         
            -
                 
     | 
| 
      
 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 | 
     | 
| 
       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. 
     | 
| 
      
 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
         
     | 
    
        data/lib/erratum/errors/crud.rb
    CHANGED
    
    | 
         @@ -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 
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
      
 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:    
     | 
| 
      
 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:    
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       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
         
     | 
    
        data/lib/erratum/version.rb
    CHANGED
    
    
    
        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 
     | 
    
         
            -
                 
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
            -
                  . 
     | 
| 
      
 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:  
     | 
| 
      
 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 
     | 
    
         
            -
               
     | 
| 
       14 
     | 
    
         
            -
               
     | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
       16 
     | 
    
         
            -
               
     | 
| 
       17 
     | 
    
         
            -
               
     | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
       19 
     | 
    
         
            -
               
     | 
| 
       20 
     | 
    
         
            -
               
     | 
| 
       21 
     | 
    
         
            -
               
     | 
| 
       22 
     | 
    
         
            -
               
     | 
| 
       23 
     | 
    
         
            -
               
     | 
| 
       24 
     | 
    
         
            -
               
     | 
| 
       25 
     | 
    
         
            -
               
     | 
| 
       26 
     | 
    
         
            -
               
     | 
| 
       27 
     | 
    
         
            -
               
     | 
| 
       28 
     | 
    
         
            -
               
     | 
| 
       29 
     | 
    
         
            -
               
     | 
| 
       30 
     | 
    
         
            -
               
     | 
| 
       31 
     | 
    
         
            -
               
     | 
| 
       32 
     | 
    
         
            -
               
     | 
| 
      
 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:  
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
      
 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:  
     | 
| 
       53 
     | 
    
         
            -
                - - " 
     | 
| 
      
 78 
     | 
    
         
            +
                    version: '7.0'
         
     | 
| 
      
 79 
     | 
    
         
            +
                - - "<"
         
     | 
| 
       54 
80 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       55 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 81 
     | 
    
         
            +
                    version: '8.0'
         
     | 
| 
       56 
82 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       57 
     | 
    
         
            -
              name:  
     | 
| 
      
 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: ' 
     | 
| 
      
 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: ' 
     | 
| 
      
 101 
     | 
    
         
            +
                    version: '8.0'
         
     | 
| 
       70 
102 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       71 
     | 
    
         
            -
              name:  
     | 
| 
      
 103 
     | 
    
         
            +
              name: byebug
         
     | 
| 
       72 
104 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       73 
105 
     | 
    
         
             
                requirements:
         
     | 
| 
       74 
106 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       75 
107 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       76 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 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: ' 
     | 
| 
      
 115 
     | 
    
         
            +
                    version: '11.1'
         
     | 
| 
       84 
116 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       85 
     | 
    
         
            -
              name:  
     | 
| 
      
 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: ' 
     | 
| 
      
 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: ' 
     | 
| 
      
 129 
     | 
    
         
            +
                    version: '3.11'
         
     | 
| 
       104 
130 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       105 
     | 
    
         
            -
              name:  
     | 
| 
      
 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: ' 
     | 
| 
      
 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: ' 
     | 
| 
      
 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:// 
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
       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 
     |