Module: PowerTypes::Service
- Defined in:
- lib/power_types/patterns/service.rb
Class Method Summary collapse
-
.new(*_attributes) ⇒ Object
rubocop:disable Metrics/MethodLength.
Class Method Details
.new(*_attributes) ⇒ Object
rubocop:disable Metrics/MethodLength
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# 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 |