Class: Service

Inherits:
Object
  • Object
show all
Defined in:
lib/service.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(**args) ⇒ Object



6
7
8
9
10
# File 'lib/service.rb', line 6

def self.call(**args)
  new.validate_arguments(@required_args, args)
     .instance_params(args)
     .perform
end

.require_args(*args) ⇒ Object



2
3
4
# File 'lib/service.rb', line 2

def self.require_args(*args)
  @required_args = args
end

Instance Method Details

#instance_params(args) ⇒ Object



26
27
28
29
30
# 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) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# 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