class ServicePacker::Service
Attributes
actions[R]
callbacks[R]
validations[R]
Public Class Methods
new()
click to toggle source
# File lib/service_packer/service.rb, line 3 def initialize common_validation_define { true } common_callback_define { true } @validations = {} @actions = {} @callbacks = {} @config = ServicePacker::Configuration.new @method_name = nil end
Public Instance Methods
action_define(*args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 35 def action_define(*args, &block) add_action(@method_name, *args, &block) end
callback_define(*args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 39 def callback_define(*args, &block) add_callback(@method_name, *args, &block) end
common_callback_define(*args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 27 def common_callback_define(*args, &block) @common_callback = ServicePacker::Core::Callback.new("common_callback", *args, &block) end
common_validation_define(*args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 23 def common_validation_define(*args, &block) @common_validation = ServicePacker::Core::Validation.new("common_validation", *args, &block) end
invoke(record, name, params, *args)
click to toggle source
# File lib/service_packer/service.rb, line 43 def invoke(record, name, params, *args) record.__set_arguments(params.zip(args).to_h) result = process(record, name, *args) record.__clear_arguments result end
process(record, name, *args)
click to toggle source
# File lib/service_packer/service.rb, line 51 def process(record, name, *args) validation_result = @common_validation.invoke(record, *args) && @validations[name].invoke(record, *args) if validation_result action_result = @actions[name].invoke(record, *args) if (action_result.respond_to?(:errors) && action_result.errors.empty?) || action_result == true @common_callback.invoke(record, *args) @callbacks[name].invoke(record, *args) true else false end else false end end
setup_method(name, &block)
click to toggle source
# File lib/service_packer/service.rb, line 14 def setup_method(name, &block) @method_name = name validation_define { true } action_define { true } callback_define { true } block.call if block_given? @method_name = nil end
validation_define(*args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 31 def validation_define(*args, &block) add_validation(@method_name, *args, &block) end
Private Instance Methods
add_action(name, *args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 76 def add_action(name, *args, &block) @actions[name] = ServicePacker::Core::Action.new(name, *args, &block) end
add_callback(name, *args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 80 def add_callback(name, *args, &block) @callbacks[name] = ServicePacker::Core::Callback.new(name, *args, &block) end
add_validation(name, *args, &block)
click to toggle source
# File lib/service_packer/service.rb, line 72 def add_validation(name, *args, &block) @validations[name] = ServicePacker::Core::Validation.new(name, *args, &block) end