Method: Module#cattr_reader

Defined in:
lib/core/facets/module/mattr.rb

#cattr_reader(*syms) ⇒ Object

Creates a class-variable attr_reader that can be accessed both on an instance and class level.

class CARExample
  @@a = 10
  cattr_reader :a
end

CARExample.a           #=> 10
CARExample.new.a       #=> 10

NOTE: This method is not a common core extension and is not loaded automatically when using require 'facets'.

CREDIT: David Heinemeier Hansson

Uncommon:

  • require ‘facets/module/cattr’



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/core/facets/module/mattr.rb', line 52

def cattr_reader(*syms)
  syms.flatten.each do |sym|
    module_eval("      unless defined? @@\#{sym}\n        @@\#{sym} = nil\n      end\n\n      def self.\#{sym}\n        @@\#{sym}\n      end\n\n      def \#{sym}\n        @@\#{sym}\n      end\n    EOS\n  end\n  return syms\nend\n", __FILE__, __LINE__)