module Cater::Service
Public Instance Methods
_service_success=(result)
click to toggle source
# File lib/cater/service.rb, line 72 def _service_success=(result) @_service_success = result end
after_call(*filters, &blk)
click to toggle source
# File lib/cater/service.rb, line 78 def after_call(*filters, &blk) set_callback(:call, :after, *filters, &blk) end
after_error(*filters, &blk)
click to toggle source
# File lib/cater/service.rb, line 94 def after_error(*filters, &blk) set_callback(:error, :after, *filters, &blk) end
after_success(*filters, &blk)
click to toggle source
# File lib/cater/service.rb, line 90 def after_success(*filters, &blk) set_callback(:success, :after, *filters, &blk) end
around_call(*filters, &blk)
click to toggle source
# File lib/cater/service.rb, line 82 def around_call(*filters, &blk) set_callback(:call, :around, *filters, &blk) end
before_call(*filters, &blk)
click to toggle source
# File lib/cater/service.rb, line 86 def before_call(*filters, &blk) set_callback(:call, :before, *filters, &blk) end
call(*args)
click to toggle source
# File lib/cater/service.rb, line 98 def call(*args) instance = self.new instance.run_callbacks :call do begin instance.call(*args) instance.send(:_service_success=, true) instance.run_callbacks :success rescue ServiceError instance.send(:_service_success=, false) instance.run_callbacks :error end end return instance end
error!(message=nil)
click to toggle source
raise error
error! “Something is required” errors.messages # => {:base=> [“Something is required”]}
error! name: “is required”, email: “invalid” errors.messages # => {:name=> [“is required”], :email=> [“invalid”]}
error! other_service.errors,
# File lib/cater/service.rb, line 36 def error!(message=nil) if message.kind_of? ActiveModel::Errors self.errors.copy! message self.message = message.values.join ', ' elsif message.kind_of? Hash message.each do |attr, msg| if msg.kind_of? Array msg.each{|m| self.errors.add(attr, m)} else self.errors.add(attr, msg) end end self.message = message.values.join ', ' else self.errors.add(:base, message) self.message = message end raise ServiceError end
error?()
click to toggle source
# File lib/cater/service.rb, line 56 def error? !success? end
on_error() { |self| ... }
click to toggle source
# File lib/cater/service.rb, line 65 def on_error yield self if block_given? && error? self end
on_success() { |self| ... }
click to toggle source
# File lib/cater/service.rb, line 60 def on_success yield self if block_given? && success? self end
success?()
click to toggle source
# File lib/cater/service.rb, line 19 def success? fail "Service was not called yet" if @_service_success.nil? @_service_success end