Class: EacRubyUtils::CommonConstructor
- Defined in:
- lib/eac_ruby_utils/common_constructor.rb
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
-
#initialize(*args) ⇒ CommonConstructor
constructor
A new instance of CommonConstructor.
- #initialize_method_args ⇒ Object
- #initialize_method_args_code ⇒ Object
- #initialize_method_code ⇒ Object
- #setup_class(klass) ⇒ Object
- #setup_class_attr_readers(klass) ⇒ Object
- #setup_class_attr_writers(klass) ⇒ Object
- #setup_class_initialize(klass) ⇒ Object
Constructor Details
#initialize(*args) ⇒ CommonConstructor
Returns a new instance of CommonConstructor.
9 10 11 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 9 def initialize(*args) @args = args end |
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args.
7 8 9 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 7 def args @args end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
7 8 9 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 7 def end |
Instance Method Details
#initialize_method_args ⇒ Object
50 51 52 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 50 def initialize_method_args args end |
#initialize_method_args_code ⇒ Object
46 47 48 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 46 def initialize_method_args_code initialize_method_args.join(', ') end |
#initialize_method_code ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 35 def initialize_method_code b = "def initialize(#{initialize_method_args_code})\n" b += " run_callbacks :initialize do\n" initialize_method_args.each do |arg| b += " self.#{arg} = #{arg}\n" end b += " end\n" b += "end\n" b end |
#setup_class(klass) ⇒ Object
13 14 15 16 17 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 13 def setup_class(klass) setup_class_attr_readers(klass) setup_class_attr_writers(klass) setup_class_initialize(klass) end |
#setup_class_attr_readers(klass) ⇒ Object
19 20 21 22 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 19 def setup_class_attr_readers(klass) klass.send(:attr_reader, *args) klass.send(:public, *args) end |
#setup_class_attr_writers(klass) ⇒ Object
24 25 26 27 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 24 def setup_class_attr_writers(klass) klass.send(:attr_writer, *args) klass.send(:private, *args.map { |a| "#{a}=" }) end |
#setup_class_initialize(klass) ⇒ Object
29 30 31 32 33 |
# File 'lib/eac_ruby_utils/common_constructor.rb', line 29 def setup_class_initialize(klass) klass.include(::ActiveSupport::Callbacks) klass.define_callbacks :initialize klass.class_eval initialize_method_code, __FILE__, __LINE__ end |