module Civil::Service
Public Class Methods
included(klass)
click to toggle source
# File lib/civil/service.rb, line 3 def self.included(klass) class << klass # Civil::Service.service # Wrapper method, used within service class # # service do # execute_step_1 # execute_step_2 # ... # end def service(&block) define_method '_run', &block end # Civil::Service.call # Initiate service execution and return standardized result # # result = MyService.call(foo: 1, bar: 'a') # # if result.ideal? # ... # else # ... # end def call(params = {}, &block) service = new(params) data = (block ? service.instance_eval(&block) : service._run) Civil::Result.new(data, service._conditions, service._meta) end end end
new(params = {})
click to toggle source
# File lib/civil/service.rb, line 36 def initialize(params = {}) params.to_h.each do |(name, value)| instance_variable_set("@#{name}", value) end end
Public Instance Methods
_conditions()
click to toggle source
# File lib/civil/service.rb, line 54 def _conditions @_conditions ||= Civil::Hash.new end
_meta()
click to toggle source
# File lib/civil/service.rb, line 58 def _meta @_meta ||= Civil::Hash.new end
add_condition(key, condition)
click to toggle source
# File lib/civil/service.rb, line 42 def add_condition(key, condition) conditions = (_conditions[key.to_sym] ||= Civil::Array.new) conditions << condition end
add_meta(key, metadatum)
click to toggle source
# File lib/civil/service.rb, line 48 def add_meta(key, metadatum) meta = (_meta[key.to_sym] ||= Civil::Array.new) meta << metadatum end
merge_result(result)
click to toggle source
# File lib/civil/service.rb, line 62 def merge_result(result) _conditions.merge! result.conditions _meta.merge! result.meta result.data end