When I type self, I get a return value main. I made this test:
main2 = Object.new
Then I can call main2, and it returns something, but when I call main, it raises an undefined variable error. How does this happen?
Here’s the assumption I found in other site about how this top level environment works:
class Object
Object.new.instance_eval do
def self.to_s
"main"
end
private
##
# Your program gets inserted here...
##
end
end
It makes sense to me.
“What is the Ruby Top-Level?” is an article on the Ruby top level that explains everything you need to know.
As an aside however, you can access
mainanywhere in your program by usingTOPLEVEL_BINDING.eval('self').