Module: Lotus::Utils::ClassAttribute::ClassMethods

Defined in:
lib/lotus/utils/class_attribute.rb

Overview

Since:

  • 0.1.0

Instance Method Summary collapse

Instance Method Details

#class_attribute(*attributes) ⇒ void

This method returns an undefined value.

Defines a class level accessor for the given attribute(s).

A value set for a superclass is automatically available by their subclasses, unless a different value is explicitely set within the inheritance chain.

Examples:

require 'lotus/utils/class_attribute'

class Vehicle
  include Lotus::Utils::ClassAttribute
  class_attribute :engines, :wheels

  self.engines = 0
  self.wheels  = 0
end

class Car < Vehicle
  self.engines = 1
  self.wheels  = 4
end

class Airplane < Vehicle
  self.engines = 4
  self.wheels  = 16
end

class SmallAirplane < Airplane
  self.engines = 2
  self.wheels  = 8
end

Vehicle.engines # => 0
Vehicle.wheels  # => 0

Car.engines # => 1
Car.wheels  # => 4

Airplane.engines # => 4
Airplane.wheels  # => 16

SmallAirplane.engines # => 2
SmallAirplane.wheels  # => 8

Parameters:

  • attributes (Array<Symbol>)

    a single or multiple attribute name(s)

Since:

  • 0.1.0



65
66
67
68
69
70
71
# File 'lib/lotus/utils/class_attribute.rb', line 65

def class_attribute(*attributes)
  singleton_class.class_eval do
    attr_accessor *attributes
  end

  class_attributes.merge(attributes)
end