Module: ClassMethods
- Included in:
- AClass
- Defined in:
- lib/carat-dev/class-constructor/constructor_methods.rb
Overview
ClassMethods
This allows all classes to be instantiated via methods of the same name, rather then having to use #new. Because these methods are capitalized, like their class couterpart, parenthesis are required.
Example
require 'carat-dev/class_methods'
class AClass
include ClassMethods
def initialize(a)
@a = a
end
end
aobj = AClass(1) # same as AClass.new(1)
class BClass < AClass
end
bobj = BClass(2) # same as BClass.new(2)
Class Method Summary collapse
Class Method Details
.include_in_all ⇒ Object
43 44 45 46 47 |
# File 'lib/carat-dev/class-constructor/constructor_methods.rb', line 43 def self.include_in_all Object.class_eval do include ClassMethods end end |
.included(klass) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/carat-dev/class-constructor/constructor_methods.rb', line 27 def self.included( klass ) Object.instance_eval { define_method( klass.name ) do |*args| klass.new(*args) end } def klass.inherited( klass ) Object.instance_eval { define_method( klass.name ) do |*args| klass.new(*args) end } super if defined? super end end |