Module: AutoAttrInit::AutoAiAutoSetter

Included in:
Class
Defined in:
lib/auto_attr_init/auto_ai.rb

Overview

RubyistたちのDRY症候群との戦い melborne.github.io/2013/09/27/auto-attr-set-in-ruby/

Constant Summary collapse

@@auto_attr_init_finished =
false

Instance Method Summary collapse

Instance Method Details

#new(*args, &block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/auto_attr_init/auto_ai.rb', line 17

def new *args, &block
  unless @@auto_attr_init_finished
    names = self.instance_method(:initialize).parameters.
      collect{|param| param[1] }.
      select{|name| name.to_s =~ /^@/ }
    unless names.empty?
      auto_attr_init *names
      @@auto_attr_init_finished = true
    end
  end
  super *args, &block
end