Class: BBServices::Service
- Inherits:
-
Object
- Object
- BBServices::Service
- Defined in:
- lib/bbservices/service.rb
Overview
The base class for all services. Handles the basic run loop and general accessors
Instance Attribute Summary collapse
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#object ⇒ Object
readonly
Returns the value of attribute object.
-
#params ⇒ Object
Returns the value of attribute params.
Class Method Summary collapse
-
.get_service_class ⇒ Object
Gets the service class.
-
.run(params = {}, &block) ⇒ Object
Creates a new service class, then calls run.
-
.run!(params = {}, &block) ⇒ Object
Creates a new service class, then calls run!.
-
.service_class(klass) ⇒ Object
Sets the service class.
Instance Method Summary collapse
- #error? ⇒ Boolean
- #failed? ⇒ Boolean
- #failure(&block) ⇒ Object
-
#initialize(params = {}) ⇒ Service
constructor
A new instance of Service.
- #number_of_params ⇒ Object
- #param(key) ⇒ Object
- #param_for(key) ⇒ Object
- #params? ⇒ Boolean
- #ran? ⇒ Boolean
-
#run(&block) ⇒ Object
This runs the safe version of the service.
-
#run!(&block) ⇒ Object
This runs the unsafe version of the service.
-
#service_class ⇒ Object
Gets the service_class.
-
#service_class=(value) ⇒ Object
Sets the service_class instance variable.
- #set_params(value) ⇒ Object
- #set_service_class(value) ⇒ Object
- #succeeded? ⇒ Boolean
- #success(&block) ⇒ Object
- #successful? ⇒ Boolean
Constructor Details
#initialize(params = {}) ⇒ Service
Returns a new instance of Service.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/bbservices/service.rb', line 36 def initialize(params = {}) ## # The object which will be assigned to the service @object = nil ## # The state of success, was the service successful @successful = false ## # The state of the run, has the service being ran @ran = false ## # The error that has been throw by the service @error = nil ## # The service class stored on the instance. This will override the # service class set statically @service_class = nil ## # The params passed to the resource @params = params end |
Instance Attribute Details
#error ⇒ Object (readonly)
Returns the value of attribute error.
6 7 8 |
# File 'lib/bbservices/service.rb', line 6 def error @error end |
#object ⇒ Object (readonly)
Returns the value of attribute object.
6 7 8 |
# File 'lib/bbservices/service.rb', line 6 def object @object end |
#params ⇒ Object
Returns the value of attribute params.
6 7 8 |
# File 'lib/bbservices/service.rb', line 6 def params @params end |
Class Method Details
.get_service_class ⇒ Object
Gets the service class
32 33 34 |
# File 'lib/bbservices/service.rb', line 32 def self.get_service_class @service_class end |
.run(params = {}, &block) ⇒ Object
Creates a new service class, then calls run
10 11 12 13 14 |
# File 'lib/bbservices/service.rb', line 10 def self.run(params = {}, &block) self.new(params).tap do |service| service.run(&block) end end |
.run!(params = {}, &block) ⇒ Object
Creates a new service class, then calls run!
18 19 20 21 22 |
# File 'lib/bbservices/service.rb', line 18 def self.run!(params = {}, &block) self.new(params).tap do |service| service.run!(&block) end end |
.service_class(klass) ⇒ Object
Sets the service class
26 27 28 |
# File 'lib/bbservices/service.rb', line 26 def self.service_class(klass) @service_class = klass end |
Instance Method Details
#error? ⇒ Boolean
154 155 156 |
# File 'lib/bbservices/service.rb', line 154 def error? !!@error end |
#failed? ⇒ Boolean
142 143 144 |
# File 'lib/bbservices/service.rb', line 142 def failed? !succeeded? end |
#failure(&block) ⇒ Object
150 151 152 |
# File 'lib/bbservices/service.rb', line 150 def failure(&block) call_block(&block) if failed? end |
#number_of_params ⇒ Object
126 127 128 |
# File 'lib/bbservices/service.rb', line 126 def number_of_params @params ? @params.length : 0 end |
#param(key) ⇒ Object
122 123 124 |
# File 'lib/bbservices/service.rb', line 122 def param(key) @params[key] if @params end |
#param_for(key) ⇒ Object
118 119 120 |
# File 'lib/bbservices/service.rb', line 118 def param_for(key) param(key) end |
#params? ⇒ Boolean
158 159 160 |
# File 'lib/bbservices/service.rb', line 158 def params? !!@params end |
#ran? ⇒ Boolean
130 131 132 |
# File 'lib/bbservices/service.rb', line 130 def ran? @ran end |
#run(&block) ⇒ Object
This runs the safe version of the service. E.g. Will rescue on exception and set the error attribute
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/bbservices/service.rb', line 66 def run(&block) set_ran begin initialize_service run_service rescue => e set_successful(false) set_error(e) ensure call_block(&block) end end |
#run!(&block) ⇒ Object
This runs the unsafe version of the service. E.g. Exceptions will be thrown
81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/bbservices/service.rb', line 81 def run!(&block) set_ran begin initialize_service run_service! call_block(&block) rescue => e set_successful(false) set_error(e) raise e end end |
#service_class ⇒ Object
Gets the service_class. This will go instance first, then static
106 107 108 |
# File 'lib/bbservices/service.rb', line 106 def service_class @service_class || self.class.get_service_class end |
#service_class=(value) ⇒ Object
Sets the service_class instance variable
100 101 102 |
# File 'lib/bbservices/service.rb', line 100 def service_class=(value) set_service_class(value) end |
#set_params(value) ⇒ Object
110 111 112 |
# File 'lib/bbservices/service.rb', line 110 def set_params(value) @params = value end |
#set_service_class(value) ⇒ Object
94 95 96 |
# File 'lib/bbservices/service.rb', line 94 def set_service_class(value) @service_class = value end |
#succeeded? ⇒ Boolean
134 135 136 |
# File 'lib/bbservices/service.rb', line 134 def succeeded? successful? end |
#success(&block) ⇒ Object
146 147 148 |
# File 'lib/bbservices/service.rb', line 146 def success(&block) call_block(&block) if succeeded? end |
#successful? ⇒ Boolean
138 139 140 |
# File 'lib/bbservices/service.rb', line 138 def successful? @successful end |