what's the difference between class ClassName
and class ::ClassName
in ruby?
class ClassName
end
vs
class ::ClassName
end
what's the difference between class ClassName
and class ::ClassName
in ruby?
class ClassName
end
vs
class ::ClassName
end
Your two examples would make difference if the classes were defined inside a ruby module, so:
module Foo
class ClassName
end
end
would define a new class inside the Foo
module. This could be accessed like Foo::ClassName
.
On the other hand, this:
module Foo
class ::ClassName
end
end
would define (or monkey-patch) the class ClassName
in the root namespace.
::Class
says 'look for Class in top level namespace'. The difference shows when in context of a module.
module A
def foo
X.new
end
end
A.foo # => A::X.new
module B
def foo
::X.new
end
end
B.foo # => X.new