Skip to content

Instantly share code, notes, and snippets.

@mlangenberg
Last active August 29, 2015 14:25
Show Gist options
  • Save mlangenberg/067389c265857c59cc2c to your computer and use it in GitHub Desktop.
Save mlangenberg/067389c265857c59cc2c to your computer and use it in GitHub Desktop.
module Fruit
@fruits = []
@mutex = Mutex.new
def self.register_class(klass)
@mutex.synchronize do
@fruits << klass
end
end
def self.fruit_classes
@fruits
end
attr_reader :fruit_color
def set_fruit_color(color)
Fruit.register_class(self)
@fruit_color = color
end
end
class Apple
extend Fruit
set_fruit_color :green
end
class Orange
extend Fruit
set_fruit_color :orange
end
class Brocolli
end
Fruit.fruit_classes.each do |klass|
puts klass.fruit_color
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment