class MonsterQueries::Builder

Attributes

paginate[W]
scope[W]

Public Class Methods

new(name) click to toggle source
# File lib/monster_queries/builder.rb, line 11
def initialize name
  @paginate = false
  @scope = [name]
end
with_scope(args) click to toggle source
# File lib/monster_queries/builder.rb, line 3
def self.with_scope args
  q = self.new nil
  q.scope = args
  q
end

Public Instance Methods

method_missing(name, args=nil) click to toggle source
# File lib/monster_queries/builder.rb, line 16
def method_missing name, args=nil
  @scope << name
  file_exists? ? file_contents(args) : self
end
paginate() click to toggle source
# File lib/monster_queries/builder.rb, line 32
def paginate
  @paginate = true
  self
end
to_s(args={}) click to toggle source
# File lib/monster_queries/builder.rb, line 21
def to_s args={}
  if file_exists?
    ::Rails.logger.tagged('MONSTER QUERY') do
      ::Rails.logger.info {"Rendered #{@scope.join('.')}"}
    end
    file_contents args
  else
    raise "Query doesn't exist: #{@scope.join('.')}"
  end
end

Private Instance Methods

file_contents(variables) click to toggle source
# File lib/monster_queries/builder.rb, line 43
def file_contents variables
  template = MonsterQueries::Query.template @scope
  result = template.call variables
  result
end
file_exists?() click to toggle source
# File lib/monster_queries/builder.rb, line 39
def file_exists?
  MonsterQueries::Query.exists? @scope
end