class PeriodicCalculations::LazyQuery

Public Class Methods

new(query) click to toggle source
# File lib/periodic_calculations/lazy_query.rb, line 3
def initialize(query)
  @query = query
  @executed = false
  @result = nil
end

Public Instance Methods

method_missing(method_name, *args, &block) click to toggle source
# File lib/periodic_calculations/lazy_query.rb, line 9
def method_missing(method_name, *args, &block)
  if method_name == :to_sql
    @query.to_sql
  else
    lazy_result.send(method_name, *args, &block)
  end
end
respond_to?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/periodic_calculations/lazy_query.rb, line 17
def respond_to?(method_name, include_private = false)
  method_name == :to_sql || super || lazy_result.respond_to?(method_name)
end
result() click to toggle source
# File lib/periodic_calculations/lazy_query.rb, line 21
def result
  lazy_result
end

Private Instance Methods

lazy_result() click to toggle source
# File lib/periodic_calculations/lazy_query.rb, line 27
def lazy_result
  if @executed
    @result
  else
    @executed = true
    @result = @query.execute
  end
end