class LightServices::Service
Public Class Methods
new(*args)
click to toggle source
# File lib/light_services/service.rb, line 11 def initialize(*args) validate_arguments(args) initialize_class_attributes(args) initialize_returns_attribute if has_returns? setup_returns if returns_block end
Public Instance Methods
call()
click to toggle source
# File lib/light_services/service.rb, line 18 def call if has_conditional? executed_method_return = validate_conditional else executed_method_return = send( execute_method_name ) end has_returns? ? instance_variable_get("@#{ returns_name }") : executed_method_return end
Private Instance Methods
has_conditional?()
click to toggle source
# File lib/light_services/service.rb, line 34 def has_conditional? !execute_method_options[:if].nil? && !execute_method_options[:if].empty? end
has_returns?()
click to toggle source
# File lib/light_services/service.rb, line 30 def has_returns? !returns.nil? end
validate_arguments(args)
click to toggle source
# File lib/light_services/service.rb, line 48 def validate_arguments(args) raise InvalidArgumentError, "Arguments required, but was given a #{args.class}" if args.empty? raise InvalidArgumentError, "keyword arguments are required" if args[0].class != Hash end
validate_conditional()
click to toggle source
# File lib/light_services/service.rb, line 38 def validate_conditional conditional_pass = send( execute_method_options[:if] ) if conditional_pass send( execute_method_name ) else send( execute_method_options[:fallback] ) if execute_method_options[:fallback] end end