class Gitomator::BaseService

Attributes

provider[R]

Public Class Methods

new(provider, opts = {}) click to toggle source
# File lib/gitomator/service.rb, line 9
def initialize(provider, opts = {})
  @provider = provider
  @blocks  = { :before => [], :after => [], :error => [] }
end

Public Instance Methods

after_each_service_call(&block) click to toggle source

@param block [ Proc (String method_name, Array<Object> args, Object result) => nil ]

# File lib/gitomator/service.rb, line 29
def after_each_service_call(&block)
  @blocks[:after].push block
end
before_each_service_call(&block) click to toggle source

@param block [ Proc (String method_name, Array<Object> args) => nil ]

# File lib/gitomator/service.rb, line 22
def before_each_service_call(&block)
  @blocks[:before].push block
end
on_service_call_error(&block) click to toggle source

@param block [ Proc (String method_name, Array<Object> args, Error error) => nil ]

# File lib/gitomator/service.rb, line 36
def on_service_call_error(&block)
  @blocks[:error].push block
end
service_call(method, *args) click to toggle source
# File lib/gitomator/service.rb, line 43
def service_call(method, *args)
  result = nil
  @blocks[:before].each {|block| self.instance_exec(method, args, &block) }

  begin
    if provider.respond_to?(method)
      result = @provider.send(method, *args)
    else
      raise Gitomator::Exception::UnsupportedProviderMethod.new(@provider, method)
    end
  rescue Exception => e
    @blocks[:error].each {|block| self.instance_exec(method, args, e, &block) }
    raise e
  end

  @blocks[:after].each {|block| self.instance_exec(method, args, result, &block) }
  return result
end