Reason #19 • January 19th, 2026

abort

Whether writing CLI tools or long-running processes, it's common to have both successful and failed exit states. In Unix-like operating systems, this is represented by exit codes, where 0 indicates success and any non-zero value indicates failure.

In Ruby, you can set the exit code of your program using the exit method. By default, calling exit without any arguments will terminate the program with an exit code of 0. To indicate failure, you can pass a non-zero integer to exit.

Ruby
if ARGV.empty?
  STDERR.puts "ERROR: No arguments provided."
  exit 1 # Exit with code 1 to indicate failure
else
  puts "Arguments provided: #{ARGV.join(", ")}"
end

# implicitly exits with code 0 at the end of the program
      
JavaScript
if (process.argv.length <= 2) {
  console.error("ERROR: No arguments provided.");
  process.exit(1); // Exit with code 1 to indicate failure
} else {
  console.log("Arguments provided: " + process.argv.slice(2).join(", "));
}

// implicitly exits with code 0 at the end of the program
      

What's this? A code example where JavaScript completes the same operation in the same number of lines? Impossible! Let's rectify that by leveraging Ruby's abort method.

Ruby
abort "ERROR: No arguments provided." if ARGV.empty?

puts "Arguments provided: #{ARGV.join(", ")}"
      
JavaScript
if (process.argv.length <= 2) {
  console.error("ERROR: No arguments provided.");
  process.exit(1);
}

console.log("Arguments provided: " + process.argv.slice(2).join(", "));
      

abort prints the provided message to stderr and exits the program with a status code of 1, providing a concise way to handle errors, and order is restored to the universe

History

abort was added in Ruby 1.6, released in 2000, as a shorthand for exit(1). However, it wasn't until Ruby 1.8 when it was enhanced to accept a message argument.

A possible inspiration for abort is the C standard library function of the same name. The idea of providing an error message to the method might have been inspired by die in Perl. Python also provides similar behaviour with its sys.exit function, which exits with a non-zero code when a string argument is provided.