Ruby break tutorial explains how to use the break keyword to control loop execution with practical examples.
last modified April 27, 2025
This tutorial explains how to use Ruby’s break keyword to control loop execution. The break statement provides early termination of loops.
The break keyword immediately exits the current loop or iterator block. Program execution continues with the statement following the loop.
Break is useful for stopping iteration when a condition is met or an error occurs. It works with all loop types and enumerable methods in Ruby.
This example shows break terminating a while loop when a counter reaches 5. The loop would normally run 10 times but exits early.
basic_while_break.rb
counter = 0
while counter < 10 puts counter break if counter == 5 counter += 1 end
puts “Loop ended”
The loop prints numbers 0 through 5, then breaks. Without break, it would continue to 9. The message after the loop confirms normal termination.
Break works similarly in iterators like each. This example searches an array for a specific value and breaks when found.
array_search.rb
fruits = [‘apple’, ‘banana’, ‘cherry’, ‘date’, ’elderberry’]
fruits.each do |fruit| puts “Checking #{fruit}” if fruit == ‘date’ puts “Found the date!” break end end
puts “Search complete”
The loop checks each fruit until it finds ‘date’. Break stops further iteration unnecessarily checking ’elderberry’. The search completes immediately.
Ruby’s break can return a value to the loop’s context. This value becomes the result of the loop expression.
break_with_value.rb
result = loop do num = rand(1..100) puts “Generated: #{num}” break num if num > 90 end
puts “High number: #{result}”
The loop generates random numbers until one exceeds 90. Break returns this number, which gets assigned to result. This pattern is useful for searches.
Break only exits the innermost loop. This example demonstrates breaking from a nested loop structure.
nested_loops.rb
(1..3).each do |i| puts “Outer loop: #{i}”
(1..3).each do |j| puts " Inner loop: #{j}" break if j == 2 end end
The inner loop breaks when j reaches 2, but the outer loop continues. Each outer iteration creates a new inner loop instance. Break affects only its immediate containing loop.
While break is mainly for loops, it can appear in case statements within loops. This example shows conditional breaking.
case_with_break.rb
count = 0
loop do count += 1 case count when 1..3 puts “Counting #{count}” when 4 puts “Stopping at 4” break else break end end
The case statement handles different count ranges. When count reaches 4, it prints a message and breaks the loop. The else clause also breaks for safety.
Break exits loops, while return exits methods. This example contrasts their behavior in similar contexts.
break_vs_return.rb
def test_break [1, 2, 3].each do |n| puts n break if n == 2 end puts “After break” end
def test_return [1, 2, 3].each do |n| puts n return if n == 2 end puts “After return” end
test_break test_return
Break exits just the loop, so “After break” prints. Return exits the entire method, skipping “After return”. Choose based on desired scope of exit.
Methods using yield can respond to break from their blocks. This example shows a custom method handling break appropriately.
custom_method.rb
def process_items items = [10, 20, 30, 40, 50] items.each do |item| yield(item) end :normal_exit end
result = process_items do |n| puts “Processing #{n}” break :early_exit if n == 30 end
puts “Result: #{result}”
The block breaks when it hits 30, making the method return :early_exit. Without break, it would return :normal_exit after processing all items.
This tutorial covered Ruby’s break keyword with examples showing loop control, value returns, and method interactions. Use break to optimize loop execution.
My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.
List all Ruby tutorials.