Start with a tiny Ruby program that stores a value and prints a greeting.

puts `puts` prints a value followed by a newline.

Hello Ruby

name
hello.rb
Replay: real traced execution (multi-file project)
name = "Ruby"
message = "Hello, #{name}!"

puts message
name = "Ada"
message = "Hello, #{name}!"

puts message
name = "Matz"
message = "Hello, #{name}!"

puts message
  1. name ← Ruby, message ← Hello, Ruby!

    1name→ Ruby = "Ruby"  #@name="Ada", "Matz"2message→ Hello, Ruby! = "Hello, #{nameRuby}!"34puts messageHello, Ruby!
    outputHello, Ruby!
  1. name ← Ada, message ← Hello, Ada!

    1name→ Ada = "Ada"2message→ Hello, Ada! = "Hello, #{nameAda}!"34puts messageHello, Ada!
    outputHello, Ada!
  1. name ← Matz, message ← Hello, Matz!

    1name→ Matz = "Matz"2message→ Hello, Matz! = "Hello, #{nameMatz}!"34puts messageHello, Matz!
    outputHello, Matz!

Follow the Greeting

  1. name starts as "Ruby".
  2. The string uses #{name} to place that value in the message.
  3. message becomes Hello, Ruby!.
  4. puts message prints Hello, Ruby!. | name | message | | --- | --- | | Ruby | Hello, Ruby! | | Ada | Hello, Ada! | | Matz | Hello, Matz! |

Exercise: hello.rb

Reproduce Hello, Ruby!, then try Ada and Matz and predict each greeting before running it.