In Ruby, fail is synonymous with raise. The fail keyword is a method of the Kernel module which is included by the class Object. The fail method raises a runtime error just like the raise keyword.
The fail method has three overloads:
-
fail: raises aRuntimeErrorwithout an error message. -
fail(string): raises aRuntimeErrorwith the string argument as an error message:fail "Failed to open file" -
fail(exception [, string [, array]]): raises an exception of classexception(first argument) with an optional error message (second argument) and callback information (third argument).Example: Assume you define a function which should fail if given a bad argument. It is better to raise an
ArgumentErrorand not aRuntimeError:fail ArgumentError, "Illegal String"Another Example: You can pass the whole backtrace to the
failmethod so you can access the trace inside therescueblock:fail ArgumentError, "Illegal String", callercalleris a Kernel method which returns the backtrace as an array of strings in the formfile:line: in 'method'.
With no arguments, raises the exception in $! or raises a RuntimeError
if $! is nil. With a single String argument, raises a RuntimeError
with the string as a message. Otherwise, the first parameter should be
the name of an Exception class (or an object that returns an Exception
object when sent an exception message). The optional second parameter
sets the message associated with the exception, and the third
parameter is an array of callback information. Exceptions are caught
by the rescue clause of begin…end blocks.
Source: Ruby Documentation on the Kernel Module.