readymade 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8483000673ca7a63fffc4b90f4daa53b22888b868e4c1cd4bf5777d1a343971f
4
- data.tar.gz: bb4439b66aa4aa72b31ccba62ae4c79a79506e91ce20499091c5971beac915b9
3
+ metadata.gz: 8f3a8c90117d3207e0e228fdc410d1799955f07bacd3753ab4b721916bd9c6a3
4
+ data.tar.gz: 53c6a9b974ab6b3a70d7df5ad60031855bb1228d9a53b1b7f8915b9c28a9df24
5
5
  SHA512:
6
- metadata.gz: e021c22b31b459638c2cdc4fafeb40b6eb0743f3164894f67ff5781f5108a52b524f297b08f6a4b9ec339552874e033af511076160cda43050b0d65913e77f20
7
- data.tar.gz: 511da71335a13117bc9b9c7e12a05ef868e2e0c48405a9ae70d24fe791067a73a123891d324a5c1ef9c119e173bbfc211fd62fc1e89820b5fc67a4d8be86268f
6
+ metadata.gz: c0907befa7f6054fab2c7cbb899741fd02c4c357f2cf959c248af99c06b78666462dbb22a5aca201f0761471624847ada443187c1520c803243e0a75c38ec458
7
+ data.tar.gz: 0cc7164cab6a23ef602a283ff27cd0bcc68a4c7053fa0469b52e499cbdf5ca0d5106dc1b6bd64ba79539b3862bd80c84a18763937e8feb1d2ea9ebc99dbafcfd
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [0.4.1] - 2024-07-15
5
+
6
+ * Add `message` to `Reaymade::UnSuccessError` exception
7
+
4
8
  ## [0.4.0] - 2024-02-23
5
9
 
6
10
  * Add `Reaymade::Model::ValidatableEnum` to validate enum values
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- readymade (0.4.0)
4
+ readymade (0.4.1)
5
5
  activejob
6
6
  activemodel
7
7
 
@@ -17,7 +17,7 @@ module Readymade
17
17
  new(*args, &block).call!.then do |res|
18
18
  return res if res.try(:success?) || res.try(:consider_success?)
19
19
 
20
- raise UnSuccessError
20
+ raise UnSuccessError.new(res.humanized_errors)
21
21
  end
22
22
  end
23
23
 
@@ -55,7 +55,7 @@ module Readymade
55
55
  end,
56
56
  :ok
57
57
  ]
58
- when :validation_fail, :bad_request
58
+ when :validation_fail, :bad_request, :fail
59
59
  [{ errors: response_obj.data[:errors] }, :bad_request]
60
60
  else
61
61
  [response_obj.status.to_sym, {}]
@@ -0,0 +1,32 @@
1
+ require 'active_support/concern'
2
+
3
+ module Readymade
4
+ module Model
5
+ module ValidatableEnum
6
+ extend ActiveSupport::Concern
7
+
8
+ class_methods do
9
+ def validatable_enum(*enums_to_fix)
10
+ enums_to_fix.each do |enum_name|
11
+ define_method(:"#{enum_name}=") do |value|
12
+ super(value)
13
+ rescue StandardError
14
+ instance_variable_set(:"@__bad_#{enum_name}", value)
15
+ super(nil)
16
+ end
17
+
18
+ validates enum_name, inclusion: {
19
+ in: send(enum_name.to_s.pluralize).keys,
20
+ message: lambda { |record, error|
21
+ val = record.instance_variable_get(:"@__bad_#{enum_name}")
22
+ return "#{error[:attribute]} is required" if val.nil?
23
+
24
+ "#{val.inspect} is not a valid #{error[:attribute]}"
25
+ }
26
+ }
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -28,9 +28,23 @@ module Readymade
28
28
  end
29
29
 
30
30
  def errors
31
+ return {} unless args.is_a?(Hash)
32
+
31
33
  args[:errors].presence || {}
32
34
  end
33
35
 
36
+ def humanized_errors
37
+ humanize_errors(errors)
38
+ end
39
+
40
+ def humanize_errors(errors)
41
+ if errors.is_a?(ActiveModel::Errors)
42
+ errors.full_messages.join('. ')
43
+ else
44
+ errors.map { |k, values| "#{k.to_s.humanize}: #{values.join(', ')}" }.join('. ')
45
+ end
46
+ end
47
+
34
48
  def consider_success?
35
49
  @consider_success
36
50
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Readymade
4
- VERSION = '0.4.0'
4
+ VERSION = '0.4.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: readymade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-23 00:00:00.000000000 Z
11
+ date: 2024-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -108,6 +108,7 @@ files:
108
108
  - lib/readymade/instant_form.rb
109
109
  - lib/readymade/model/api_attachable.rb
110
110
  - lib/readymade/model/filterable.rb
111
+ - lib/readymade/model/validatable_enum.rb
111
112
  - lib/readymade/operation.rb
112
113
  - lib/readymade/response.rb
113
114
  - lib/readymade/version.rb