Skip to content

Instantly share code, notes, and snippets.

@beccasaurus
Created August 6, 2009 22:24
Show Gist options
  • Save beccasaurus/163596 to your computer and use it in GitHub Desktop.
Save beccasaurus/163596 to your computer and use it in GitHub Desktop.
#! /usr/bin/env ruby
class Foo
DEFAULT_VAR = 'I am the default'
class << self
attr_accessor :var
end
def self.var
@var || DEFAULT_VAR
end
attr_accessor :var
def var
@var || self.class.var
end
end
class Bar < Foo
end
puts "Foo.var => #{ Foo.var.inspect }"
puts "Bar.var => #{ Bar.var.inspect }"
puts "Foo.new.var => #{ Foo.new.var.inspect }"
puts "Bar.new.var => #{ Bar.new.var.inspect }"
puts "\nChanging Bar.var to 5"
Bar.var = 5
puts "Foo.var => #{ Foo.var.inspect }"
puts "Bar.var => #{ Bar.var.inspect }"
puts "Foo.new.var => #{ Foo.new.var.inspect }"
puts "Bar.new.var => #{ Bar.new.var.inspect }"
puts "\nChanging an instance of Bar to 10"
instance_of_bar = Bar.new
instance_of_bar.var = 10
puts "instance_of_bar.var => #{ instance_of_bar.var.inspect }"
puts "Foo.var => #{ Foo.var.inspect }"
puts "Bar.var => #{ Bar.var.inspect }"
puts "Foo.new.var => #{ Foo.new.var.inspect }"
puts "Bar.new.var => #{ Bar.new.var.inspect }"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment