class Interactor::Initializer::Initialize
Attributes
attributes[R]
keyword_params[R]
target_class[R]
Public Class Methods
for(*args, **kwargs)
click to toggle source
# File lib/interactor/initializer/initialize.rb, line 2 def self.for(*args, **kwargs) new(*args, **kwargs).run end
new(target_class, attributes, keyword_params: false)
click to toggle source
# File lib/interactor/initializer/initialize.rb, line 8 def initialize(target_class, attributes, keyword_params: false) @target_class = target_class @attributes = attributes @keyword_params = keyword_params end
Public Instance Methods
run()
click to toggle source
# File lib/interactor/initializer/initialize.rb, line 14 def run target_class.class_eval <<-RUBY def initialize(#{initializer_signature(attributes)}) #{attr_assignments(attributes)} end RUBY end
Private Instance Methods
attr_assignments(attributes)
click to toggle source
# File lib/interactor/initializer/initialize.rb, line 30 def attr_assignments(attributes) attributes.inject('') do |assignments, attribute| "#{assignments}@#{attribute} = #{attribute};" end end
initializer_signature(attributes)
click to toggle source
# File lib/interactor/initializer/initialize.rb, line 24 def initializer_signature(attributes) return attributes.join(', ') unless keyword_params attributes.map { |attribute| "#{attribute}:" }.join(', ') end