Ruby Basics : The Top Level Context

In this article we will discuss about the top level context in Ruby program. We will experiment sending messages with and without explicit receiver.

Top Level

What is top level? You are in top level when you have not entered into a class, module or method definition. Or exited from all class, module or method definitions.

Top Level in a Program

Hello without Receiver

Let's write a simple program that prints hello at the top level.

puts 'hello'

As you would expect, this prints:


The IO Class

Can we use an explicit receiver? Let's ask Ruby for the public instance methods of IO class.

puts IO.public_instance_methods(false).grep(/put/)

The grep searches for methods that has put in its name. The result shows that the puts is a public instance method of IO class.


The false argument to the method filters out the methods from the super-class of IO class.

Hello with Receiver

The puts is an instance method in IO class. Let's call the public instance method puts in the IO class.

io =
io.puts 'hello'

The argument to IO constructor, 1, tells Ruby to print to the standard output. This prints hello to the terminal.

Standard Output Global Variable

It's the same as doing:

$stdout.puts 'hello'

Here the $stdout is the Ruby built-in global variable for standard output. Global variables can be accessed from anywhere.


In this article we discussed about the top level context in Ruby program. We called the puts method using an explicit receiver as well as without providing an explicit receiver. In The Default Receiver article, we will see what happens when we call puts without an explicit receiver.

Related Articles

Ace the Technical Interview

  • Easily find the gaps in your knowledge
  • Get customized lessons based on where you are
  • Take consistent action everyday
  • Builtin accountability to keep you on track
  • You will solve bigger problems over time
  • Get the job of your dreams

Take the 30 Day Coding Skills Challenge

Gain confidence to attend the interview

No spam ever. Unsubscribe anytime.