Module: BBServices::ServiceProvider

Defined in:
lib/bbservices/service_provider.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/bbservices/service_provider.rb', line 6

def self.included(base)
  base.extend ClassMethods
  base.class_eval do

    ##
    # Creates a brand new service of a given type
    def service(service_type, service_params = {})
      service_type.new.tap do |service|
        service.set_params(service_params)
      end
    end

    ##
    # Creates and runs a brand new service using the safe method
    def run_service(service_type, service_params = {}, &block)
      service(service_type, service_params).tap do |service|
        service.set_service_class(service_type)
        service.run(&block)
      end
    end

    ##
    # Creates and runs a brand new service using the unsafe method
    def run_service!(service_type, service_params = {}, &block)
      service(service_type, service_params).tap do |service|
        service.set_service_class(service_type)
        service.run!(&block)
      end
    end
  end
end