Class: Gitomator::BaseService
- Inherits:
-
Object
- Object
- Gitomator::BaseService
- Defined in:
- lib/gitomator/service.rb
Direct Known Subclasses
Service::CI, Service::Git, Service::Hosting, Service::Tagging
Instance Attribute Summary collapse
-
#provider ⇒ Object
readonly
Returns the value of attribute provider.
Instance Method Summary collapse
- #after_each_service_call(&block) ⇒ Object
- #before_each_service_call(&block) ⇒ Object
-
#initialize(provider, opts = {}) ⇒ BaseService
constructor
A new instance of BaseService.
- #on_service_call_error(&block) ⇒ Object
- #service_call(method, *args) ⇒ Object
Constructor Details
#initialize(provider, opts = {}) ⇒ BaseService
Returns a new instance of BaseService.
9 10 11 12 |
# File 'lib/gitomator/service.rb', line 9 def initialize(provider, opts = {}) @provider = provider @blocks = { :before => [], :after => [], :error => [] } end |
Instance Attribute Details
#provider ⇒ Object (readonly)
Returns the value of attribute provider.
7 8 9 |
# File 'lib/gitomator/service.rb', line 7 def provider @provider end |
Instance Method Details
#after_each_service_call(&block) ⇒ Object
29 30 31 |
# File 'lib/gitomator/service.rb', line 29 def after_each_service_call(&block) @blocks[:after].push block end |
#before_each_service_call(&block) ⇒ Object
22 23 24 |
# File 'lib/gitomator/service.rb', line 22 def before_each_service_call(&block) @blocks[:before].push block end |
#on_service_call_error(&block) ⇒ Object
36 37 38 |
# File 'lib/gitomator/service.rb', line 36 def on_service_call_error(&block) @blocks[:error].push block end |
#service_call(method, *args) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# 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 |