Module: Hanami::Utils::ClassAttribute::ClassMethods Private

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

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Since:

  • 0.1.0

Instance Method Summary collapse

Instance Method Details

#class_attribute(*attributes) ⇒ void

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

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 'hanami/utils/class_attribute'

class Vehicle
  include Hanami::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



70
71
72
73
74
75
76
# File 'lib/hanami/utils/class_attribute.rb', line 70

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

  class_attributes.merge(attributes)
end