Code Snippets

class Report
  def total
    @total ||= expensive_calculation
  end

  private

  def expensive_calculation
    sleep 2
    42
  end
end

r = Report.new
puts r.total
puts r.total  # cached