C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
We use the puts, print and p methods in Ruby to display text (or other data types).
With stdin, we handle input from the console. Operators like << are helpful. And often a loop is used to create an interactive console program with a prompt.
An example. We begin with a simple program. Here the puts method writes a line to the console window. It writes each argument to a separate line.
Tip: To combine multiple parts on a single line, we can concatenate strings. We use << or + for this.
String: It sometimes is necessary to use the String constructor to convert integers to strings.
Array: When displaying an array, puts will place each element onto a separate line.
Based on:
Ruby 2
Ruby program that uses puts
value = 100
# Print values on separate lines.
# ... Parentheses are optional.
puts value
puts("FINISHED")
# Use << to append a string.
puts "VALUE " << String(value)
# Use + to append.
puts "VALUE " + String(value)
# Print all Array elements on separate lines.
elements = [10, 100, 1000]
puts elements
Output
100
FINISHED
VALUE 100
VALUE 100
10
100
1000

P method. Let us continue with the P method. This one is good for lazy programmers. It displays data in a literal way—it includes quotes around a string, for example.
And: P displays an Array or Hash on a single line. This is convenient and often a good choice.
Tip: As with other methods in Ruby, parentheses are optional. Usually "p" is used without parentheses.
Ruby program that uses p method
# Use p method.
p "cat"
# Write an array.
items = [5, 55, 555]
p items
# Write a hash.
lookup = {"cat" => 4, "bird" => 2}
p lookup
# Use p to write two strings on one line.
part1 = "HELLO"
part2 = "WORLD"
p part1 << "... " << part2
# Nil is displayed as nil.
p(nil)
Output
"cat"
[5, 55, 555]
{"cat"=>4, "bird"=>2}
"HELLO... WORLD"
nil

Print. This method appends no newlines to text. We can thus use many print statements, one after another, on a single line. But we must also print a newline manually.
Tip: Print() is a good choice for lines that are built up in many steps. We can avoid concatenating strings ourselves.
Ruby program that uses print # Print statements on the same line. print "dog" print " is cute" print "\n" # Print entire-line statements. print "There are " << String(4) << " apples.\n" print "I ate a lemon.\n" # Print a multiline statement. print "***\nYou are a winner!\n***\n" Output dog is cute There are 4 apples. I ate a lemon. *** You are a winner! ***

Stdin. We can read a line from the console with $stdin.readline. This method returns a string. The stdin source can be configured but by default it is set to the keyboard on the console.
Ruby program that uses stdin # Read line from console window. line = $stdin.readline() # Display the string. puts "You typed: " << line Output cat You typed: cat

Interactive. An interactive console program can be developed with $stdin.readline. First we enter a while-true loop—this continues indefinitely.
Begin: We use a begin, rescue, ensure construct to handle errors and run some code after the selection is made.
Integer: We convert the text entered by the user into an Integer. This makes it easier to test for values.
Case: The case statement tests the integer we received. We handle the values 0 through 3 in special ways.
Ruby program that uses stdin, interactive loop
while true
print "Type a number: "
line = $stdin.readline()
begin
# Convert string to integer.
number = Integer(line)
# Handle various cases.
case number
when 0
puts "Zero"
when 1, 2, 3
puts "One to three"
else
puts "Other"
end
rescue
# Let the loop continue.
puts "Invalid"
ensure
puts "Done"
end
end
Output
Type a number: 0
Zero
Done
Type a number: 2
One to three
Done
Type a number: X
Invalid
Done

A summary. Ruby, as an interpreted language, is well-suited to developer or server tasks. For user programs, a compiled language is often a better choice.
But for developers, console programs are easy-to-maintain and efficient. With print(), puts() and the concise P method, we easily output text to an output stream.