Class: BBServices::Service

Inherits:
Object
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

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

#errorObject (readonly)

Returns the value of attribute error.



6
7
8
# File 'lib/bbservices/service.rb', line 6

def error
  @error
end

#objectObject (readonly)

Returns the value of attribute object.



6
7
8
# File 'lib/bbservices/service.rb', line 6

def object
  @object
end

#paramsObject

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_classObject

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

Returns:

  • (Boolean)


154
155
156
# File 'lib/bbservices/service.rb', line 154

def error?
  !!@error
end

#failed?Boolean

Returns:

  • (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_paramsObject



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

Returns:

  • (Boolean)


158
159
160
# File 'lib/bbservices/service.rb', line 158

def params?
  !!@params
end

#ran?Boolean

Returns:

  • (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_classObject

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

Returns:

  • (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

Returns:

  • (Boolean)


138
139
140
# File 'lib/bbservices/service.rb', line 138

def successful?
  @successful
end