metaprogramming/class_variables_parens.rb

tests/_examples/metaprogramming/class_variables_parens.rb in the metorex repository.

# Module#class_variables — written with parentheses. Returns class variable
# names as symbols in definition order. The optional `inherit` argument
# controls whether class variables from ancestors are included.
class Base
  @@base = 1
  @@shared = 2
end

class Derived < Base
  @@derived = 3
end

puts(Base.class_variables.inspect)
puts(Derived.class_variables.inspect)
puts(Derived.class_variables(false).inspect)

module Flags
  @@flag = :on
end

puts(Flags.class_variables.inspect)

Output:

[:@@base, :@@shared]
[:@@derived, :@@base, :@@shared]
[:@@derived]
[:@@flag]