Skip to content

Instantly share code, notes, and snippets.

@rwz
Created June 21, 2012 11:45
Show Gist options
  • Save rwz/2965286 to your computer and use it in GitHub Desktop.
Save rwz/2965286 to your computer and use it in GitHub Desktop.
control class methods from instance? easy!
class MyClass
attr_accessor :klass_name
def initialize(klass_name)
self.klass_name = klass_name
end
def self.name
to_s
end
def class
Class.new(super).tap do |klass|
klass.singleton_class.send(:define_method, :name, &self.method(:klass_name))
end
end
end
p MyClass.name # "MyClass"
p MyClass.new('lolwut?').class.name # "lolwut?"
p MyClass.name # "MyClass"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment