module PowerTypes::Service
Public Class Methods
new(*_attributes)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/power_types/patterns/service.rb, line 4 def self.new(*_attributes) attr_names = [] attr_defaults = {} _attributes.each do |att| if att.is_a? Hash attr_defaults.merge! att attr_names += att.keys else attr_names << att end end Class.new do def logger Rails.logger end define_method(:initialize) do |kwargs = {}| unless (kwargs.keys - attr_names).empty? raise ArgumentError, "Unexpected arguments: #{(kwargs.keys - attr_names).join(', ')}" end kwargs = attr_defaults.merge kwargs attr_names.map do |a| raise ArgumentError, "Missing parameter: #{a}" unless kwargs.key? a instance_variable_set "@#{a}", kwargs[a] end end end end
Public Instance Methods
logger()
click to toggle source
# File lib/power_types/patterns/service.rb, line 18 def logger Rails.logger end