Here’s how you do it:
class Foo
class << self
# Everything here is in class scope
attr_accessor :bar
end
end
class << self
# Everything here is in class scope
attr_accessor :bar
end
end
That’s it. What class << self does is, it puts you in a class definition block for the singleton Class instance of Foo. Lets make that a bit clearer with an example. The following two snippets are functionally identical:
class Foo
def self.bar
42
end
end
def self.bar
42
end
end
is the same as
class Foo
class << self
def bar
42
end
end
end
class << self
def bar
42
end
end
end
Sometimes I wonder why other languages aren’t as elegant as Ruby. But then again, it’s somewhat difficult to get your head wrapped around some of the meta-programming concepts of Ruby, too.
Thanks to these guys for the solution.