Class: CivilService::Service
- Inherits:
-
Object
- Object
- CivilService::Service
- Includes:
- ActiveModel::Validations
- Defined in:
- lib/civil_service/service.rb
Class Attribute Summary collapse
- .result_class ⇒ Object
-
.validate_manually ⇒ Object
Returns the value of attribute validate_manually.
Instance Attribute Summary collapse
Instance Method Summary collapse
- #call(validate: true) ⇒ Object
- #call!(validate: true) ⇒ Object
- #call_and_raise(validate: true) ⇒ Object
Class Attribute Details
.result_class ⇒ Object
10 11 12 |
# File 'lib/civil_service/service.rb', line 10 def result_class @result_class || CivilService::Result end |
.validate_manually ⇒ Object
Returns the value of attribute validate_manually.
7 8 9 |
# File 'lib/civil_service/service.rb', line 7 def validate_manually @validate_manually end |
Instance Attribute Details
#logger ⇒ Object
47 48 49 |
# File 'lib/civil_service/service.rb', line 47 def logger @logger || Rails.logger end |
Instance Method Details
#call(validate: true) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/civil_service/service.rb', line 15 def call(validate: true) if validate && !self.class.validate_manually return failure(errors) unless valid? end begin inner_call rescue StandardError => exception errors.add :base, exception. failure(errors, exception: exception) end end |
#call!(validate: true) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/civil_service/service.rb', line 37 def call!(validate: true) if validate && !self.class.validate_manually raise CivilService::ServiceFailure.new(self, failure(errors)) unless valid? end result = call_and_raise(validate: false) # we already just did the validation step if needed raise CivilService::ServiceFailure.new(self, result) if result.failure? result end |
#call_and_raise(validate: true) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/civil_service/service.rb', line 28 def call_and_raise(validate: true) result = call(validate: validate) if result.exception raise result.exception, result.exception., result.exception.backtrace end result end |