Bird
Raised Fist0
Rubyprogramming~10 mins

Heredoc syntax for multiline strings in Ruby - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Heredoc syntax for multiline strings
Start
↓
Declare heredoc with <<IDENTIFIER
↓
Write multiple lines of text
↓
End heredoc with IDENTIFIER alone on a line
↓
Use the multiline string variable
↓
End
The program starts by declaring a heredoc with <<IDENTIFIER, then writes multiple lines, ends the heredoc with the IDENTIFIER alone on a line, and finally uses the multiline string.
Execution Sample
Ruby
text = <<HEREDOC
Hello,
This is a
multiline string.
HEREDOC
puts text
This code creates a multiline string using heredoc syntax and prints it.
Execution Table
StepActionEvaluationResult
1Declare variable 'text' with heredoc start <<HEREDOCNo outputWaiting for multiline input
2Read line: 'Hello,'Add line to stringtext = 'Hello,\n'
3Read line: 'This is a'Add line to stringtext = 'Hello,\nThis is a\n'
4Read line: 'multiline string.'Add line to stringtext = 'Hello,\nThis is a\nmultiline string.\n'
5Read line: 'HEREDOC'End heredocComplete multiline string assigned to text
6Call puts textPrint stringOutput: Hello, This is a multiline string.
7Program endsNo further actionExit
💡 Heredoc ends when the IDENTIFIER 'HEREDOC' is found alone on a line; then string is printed and program ends.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
textnil'Hello,\n''Hello,\nThis is a\n''Hello,\nThis is a\nmultiline string.\n''Hello,\nThis is a\nmultiline string.\n''Hello,\nThis is a\nmultiline string.\n'
Key Moments - 3 Insights
Why does the heredoc end only when the IDENTIFIER is alone on a line?
The heredoc syntax requires the ending IDENTIFIER to be alone on a line with no spaces or characters, as shown in step 5 of the execution_table, to mark the end of the multiline string.
Does the heredoc include the newline characters at the end of each line?
Yes, each line read inside the heredoc adds a newline character '\n' at the end, as seen in the variable_tracker where lines accumulate with '\n'.
What happens if you put spaces before the ending IDENTIFIER?
If spaces or characters appear before the ending IDENTIFIER, the heredoc does not end, and Ruby continues reading lines, so the string is not completed (not shown in this trace but important to know).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4, what is the value of 'text'?
A'Hello,\nThis is a\n'
B'Hello,'
C'Hello,\nThis is a\nmultiline string.\n'
Dnil
💡 Hint
Check the 'Result' column at step 4 in the execution_table.
At which step does the heredoc end and the multiline string get assigned?
AStep 5
BStep 6
CStep 3
DStep 2
💡 Hint
Look for the step where the IDENTIFIER 'HEREDOC' is read alone on a line in the execution_table.
If you add an extra blank line before the ending IDENTIFIER, how does it affect the string?
AThe string ends before the blank line
BThe blank line is included in the string
CThe program crashes
DThe blank line is ignored
💡 Hint
Recall that all lines before the ending IDENTIFIER are included, as shown in variable_tracker.
Concept Snapshot
Heredoc syntax in Ruby:
Use <<IDENTIFIER to start a multiline string.
Write multiple lines as needed.
End with IDENTIFIER alone on a line.
The string includes all lines and newlines.
Use the variable like any string.
Full Transcript
This visual trace shows how Ruby's heredoc syntax works for multiline strings. The program starts by declaring a variable 'text' with <<HEREDOC. Then it reads each line inside the heredoc, adding them to the string with newline characters. When the ending IDENTIFIER 'HEREDOC' is found alone on a line, the heredoc ends and the multiline string is assigned to 'text'. Finally, the string is printed with puts. The variable_tracker shows how 'text' grows line by line. Key moments clarify that the ending IDENTIFIER must be alone on a line and that newlines are included. The quiz tests understanding of the string content at different steps and the heredoc ending rules.

Practice

(1/5)
1. What is the main purpose of using heredoc syntax in Ruby?
easy
A. To declare variables with fixed values
B. To create single-line comments
C. To write multiline strings easily without using escape characters
D. To define methods with multiple parameters

Solution

  1. Step 1: Understand what heredoc does

    Heredoc syntax allows writing strings that span multiple lines without needing escape characters like \n.
  2. Step 2: Compare options

    Declaring variables with fixed values, creating single-line comments, and defining methods with multiple parameters describe unrelated Ruby features. Only writing multiline strings easily without using escape characters correctly describes heredoc's purpose.
  3. Final Answer:

    To write multiline strings easily without using escape characters -> Option C
  4. Quick Check:

    Heredoc = multiline strings [OK]
Hint: Heredoc is for easy multiline text, not comments or methods [OK]
Common Mistakes:
  • Confusing heredoc with comments
  • Thinking heredoc defines methods
  • Assuming heredoc is for variables only
2. Which of the following is the correct syntax to start a heredoc string named TEXT in Ruby?
easy
A. << TEXT
B. <TEXT
C.
D. TEXT<<

Solution

  1. Step 1: Recall heredoc start syntax

    Heredoc starts with << followed immediately by an identifier, e.g., <
  2. Step 2: Check each option

    <<TEXT matches the correct syntax. << TEXT with space is invalid. Arrangements like
  3. Final Answer:

    <<TEXT -> Option B
  4. Quick Check:

    Start heredoc with <<IDENTIFIER [OK]
Hint: Heredoc starts with << followed by the identifier [OK]
Common Mistakes:
  • Putting identifier before <<
  • Using incorrect symbols like < or - wrongly
  • Confusing heredoc start with end
3. What will be the output of this Ruby code?
text = <<~GREETING
  Hello,
    Welcome to Ruby!
GREETING
puts text
medium
A. Hello, Welcome to Ruby!
B. Hello, Welcome to Ruby!
C. Hello, Welcome to Ruby!
D. !ybuR ot emocleW ,olleH

Solution

  1. Step 1: Understand <<~ operator

    The <<~ syntax removes leading spaces common to all lines, aligning text left.
  2. Step 2: Analyze the given text

    Original lines have 2 spaces before 'Hello,' and 4 before 'Welcome'. The common indent is 2 spaces, so those are removed.
  3. Step 3: Resulting output

    After removing 2 spaces, 'Hello,' starts at column 0, 'Welcome...' starts with 2 spaces.
  4. Final Answer:

    Hello, Welcome to Ruby! -> Option A
  5. Quick Check:

    <<~ removes common indent [OK]
Hint: <<~ removes common leading spaces from all lines [OK]
Common Mistakes:
  • Ignoring <<~ and expecting original indentation
  • Confusing \n with actual new lines
  • Assuming all spaces are removed
4. Identify the error in this Ruby heredoc code:
message = <
medium
A. The string must be enclosed in quotes
B. The starting identifier should be lowercase
C. The heredoc must use <<~ instead of <<
D. The ending identifier must match exactly and be alone on its line

Solution

  1. Step 1: Check heredoc start and end identifiers

    Heredoc must end with the same identifier used to start it, alone on a line with no spaces.
  2. Step 2: Analyze given code

    Start identifier is GREETING but end identifier is END, which is incorrect.
  3. Final Answer:

    The ending identifier must match exactly and be alone on its line -> Option D
  4. Quick Check:

    Start and end identifiers must match [OK]
Hint: End heredoc with the exact same word alone on a line [OK]
Common Mistakes:
  • Mismatching start and end identifiers
  • Adding spaces after end identifier
  • Using lowercase instead of uppercase identifiers
5. You want to create a multiline string with indentation preserved but also want to remove leading spaces common to all lines for neat code. Which heredoc syntax should you use in Ruby?
hard
A. <<~TEXT
B. <<-TEXT
C. <TEXT
D. <<=TEXT

Solution

  1. Step 1: Understand heredoc variants

    <<TEXT preserves all spaces; <<-TEXT allows indenting the end marker; <<~TEXT removes common leading spaces from all lines.
  2. Step 2: Match requirement

    To keep indentation inside the string but remove common leading spaces for clean code, <<~TEXT is the correct choice.
  3. Final Answer:

    <<~TEXT -> Option A
  4. Quick Check:

    <<~ trims common indent [OK]
Hint: <<~ removes common indent, use it for clean multiline strings [OK]
Common Mistakes:
  • Using <<- which only affects end marker indentation
  • Using << which keeps all spaces
  • Assuming <<= is valid syntax
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard