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