If you have been programming in Rails for pretty much any length of time, you will definitely run into a method that looks like this:

def some_method
  foo = []
  foo << Cat.new
  foo << Dog.new
  return foo
end

You initiate some local variable, do some things to it, then return it.

There is a lot of boiler plate code here and the smart developers behind rails added a method to the object class called returning. This method simplifies this workflow. Here is an example of the returning method in action.

def some_method
  returning foo = [] do
    foo << Cat.new
    foo << Dog.new
  end
end

This is a much more elegant solution since it just reads more like a sentence than the previous example. “Add Cat and Dog to foo then return” vs “create foo. Add Cat and Dog. return foo”. Ruby’s ability to easily add DSL to objectss on the fly makes ruby so powerful and easy to maintian.