luna_park 0.11.4 → 0.11.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25c15d875ee58d0d61589f2041e81c65eeccde628e8a07c584722fc69865741a
4
- data.tar.gz: 27f13cbf3d1073f651a13c714092e1ebac28b4b9e3c8eb0dcfcc2fdec4b0009e
3
+ metadata.gz: dfa79de19dfdaeb2246f413fe75c89064077ba6b353af416984169a0c7122130
4
+ data.tar.gz: 3b44af84612de0a5eeaa04c960291647ad674336a8f33c50725410849a0bdbd6
5
5
  SHA512:
6
- metadata.gz: e747fa427d30d6b64d3cd4300beb67d27b080b41de497f959caa05b719b94845178c8fa53944261a81fcedb9fb31950a5ba53d01ae87bf529b9eba16a4e92b9a
7
- data.tar.gz: 0432dfffa7d6702f79fdfa2abdf68b4fee5d9d6fdd4f0864e01fd7829873db8c32a2656b72479f4735d0423256aecb5f97e55c03b5daa3b9c513036062be336f
6
+ metadata.gz: 73cf56e3506c153cf50b1b2f2912d04f2a329ab2b1c97f007e9a0c9bf69265d03cdc0d57e6a7d80f04e9c57aef386cf76c04c16497fc82ac35dc3b5297649bbe
7
+ data.tar.gz: 58b2fb6fe676786700d8d86cb1780c70bb9ae530d3a140d3ab25a88db5a8cbf00f342d43aaba9f0b3145e2570c1ac4dd1c3373b2b8bfd93e2e0f40f831e196a7
data/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.11.5] - 2022-09-27
8
+ Changed
9
+ - Added `.custom_error` method to `Extensions::HasError` to define errors with a custom superclass
10
+ - Added `#inject` method to `Extensions::Injector` - dependencies setter that allows you to create method chains
11
+
7
12
  ## [0.11.4] - 2022-07-11
8
13
  Changed
9
14
  - allow require Notifiers::Sentry when sentry-ruby version >= 4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- luna_park (0.11.4)
4
+ luna_park (0.11.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -43,10 +43,10 @@ module LunaPark
43
43
  # class Service
44
44
  # include LunaPark::Extensions::HasErrors
45
45
  #
46
- # class CustomError < LunaPark::Errors::Business; end
46
+ # class LogicError < LunaPark::Errors::Business; end
47
47
  # end
48
48
  #
49
- # Service.new.error :custom_error # => raise CustomError
49
+ # Service.new.error :logic_error # => raise LogicError
50
50
  #
51
51
  # @param title [Symbol|String] - Title of error
52
52
  # @param msg [String] - Message of error
@@ -89,12 +89,12 @@ module LunaPark
89
89
  # class Service
90
90
  # include LunaPark::Extensions::HasErrors
91
91
  #
92
- # system_error :tech_error, 'Custom message'
92
+ # system_error :tech_error, 'Error message'
93
93
  # end
94
94
  #
95
95
  # tech_error = Service::TechError.new
96
96
  # tech_error.is_a? LunaPark::Errors::System # => true
97
- # tech_error.message # => 'Custom message'
97
+ # tech_error.message # => 'Error message'
98
98
  def system_error(title, txt = nil, i18n_key: nil, notify: nil, &default_message_block)
99
99
  error_class = Class.new(Errors::System)
100
100
  error_class.message(txt, i18n_key: i18n_key, &default_message_block)
@@ -102,6 +102,41 @@ module LunaPark
102
102
  const_set(error_class_name(title), error_class)
103
103
  end
104
104
 
105
+ ##
106
+ # Define error with a custom superclass.
107
+ # The superclass must be inherited from LunaPark::Errors::Base.
108
+ #
109
+ # @example
110
+ # class BaseError < LunaPark::Errors::Business
111
+ # alias description message
112
+ # end
113
+ #
114
+ # class Service
115
+ # include LunaPark::Extensions::HasErrors
116
+ #
117
+ # custom_error :custom_error, BaseError, 'Error message'
118
+ # end
119
+ #
120
+ # custom_error = Service::CustomError.new
121
+ # custom_error.is_a? BaseError # => true
122
+ # custom_error.description # => 'Error message'
123
+ # rubocop:disable Metrics/ParameterLists
124
+ def custom_error(title, inherit_from, txt = nil, i18n_key: nil, notify: nil, &default_message_block)
125
+ unless inherit_from < Errors::Base
126
+ raise ArgumentError, 'inherit_from must be a superclass of LunaPark::Errors::Base'
127
+ end
128
+
129
+ error_class = Class.new(inherit_from)
130
+ error_class.inherited(inherit_from)
131
+ error_class.notify(notify) unless notify.nil?
132
+
133
+ message_present = ![txt, i18n_key, default_message_block].all?(&:nil?)
134
+ error_class.message(txt, i18n_key: i18n_key, &default_message_block) if message_present
135
+
136
+ const_set(error_class_name(title), error_class)
137
+ end
138
+ # rubocop:enable Metrics/ParameterLists
139
+
105
140
  ##
106
141
  # Get error class name
107
142
  #
@@ -191,6 +191,19 @@ module LunaPark
191
191
  def dependencies=(value)
192
192
  @dependencies = Dependencies.wrap(value)
193
193
  end
194
+
195
+ ##
196
+ # Set dependencies, returns `self` to allow chaining
197
+ # Don't forget to override <b>all</b> dependencies.
198
+ #
199
+ # use_case
200
+ # .inject({ repo: -> { Fake::Repo.new }})
201
+ # .call
202
+ #
203
+ def inject(value)
204
+ self.dependencies = value
205
+ self
206
+ end
194
207
  end
195
208
  end
196
209
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LunaPark
4
- VERSION = '0.11.4'
4
+ VERSION = '0.11.5'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luna_park
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.4
4
+ version: 0.11.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Kudrin
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-08-30 00:00:00.000000000 Z
12
+ date: 2022-10-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bugsnag