class Service
Public Class Methods
call(**args)
click to toggle source
# File lib/service.rb, line 6 def self.call(**args) new.validate_arguments(@required_args, args) .instance_params(args) .perform end
require_args(*args)
click to toggle source
# File lib/service.rb, line 2 def self.require_args(*args) @required_args = args end
Public Instance Methods
instance_params(args)
click to toggle source
# File lib/service.rb, line 26 def instance_params(args) args.each { |key, value| instance_variable_set("@#{key}", value) } self end
validate_arguments(required_args, args)
click to toggle source
# File lib/service.rb, line 12 def validate_arguments(required_args, args) missing_args = required_args&.map do |required_arg| required_arg unless args.include?(required_arg) end&.compact if missing_args.present? raise ArgumentError, "Required #{'param'.pluralize(missing_args.count)} missing in #{self.class.name}: #{missing_args.join(', ')}" end self end