class RecordCache::Arel::QueryVisitor

Visitor for the ActiveRelation to extract a simple cache query Only accepts single select queries with equality where statements Rejects queries with grouping / having / offset / etc.

Visitor for the ActiveRelation to extract a simple cache query Only accepts single select queries with equality where statements Rejects queries with grouping / having / offset / etc.

Visitor for the ActiveRelation to extract a simple cache query Only accepts single select queries with equality where statements Rejects queries with grouping / having / offset / etc.

Visitor for the ActiveRelation to extract a simple cache query Only accepts single select queries with equality where statements Rejects queries with grouping / having / offset / etc.

Visitor for the ActiveRelation to extract a simple cache query Only accepts single select queries with equality where statements Rejects queries with grouping / having / offset / etc.

Constants

COMMA
DESC
GROUPING_EQUALS_REGEXP
GROUPING_IN_REGEXP
ORDER_BY_REGEXP

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/record_cache/datastore/active_record_30.rb, line 92
def initialize
  super()
  @cacheable  = true
  @query = ::RecordCache::Query.new
end

Public Instance Methods

accept(ast) click to toggle source
Calls superclass method
# File lib/record_cache/datastore/active_record_30.rb, line 98
def accept ast
  super
  @cacheable && !ast.lock ? @query : nil
end

Private Instance Methods

handle_order_by(order) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 189
def handle_order_by(order)
  order.to_s.split(COMMA).each do |o|
    # simple sort order (+people.id+ can be replaced by +id+, as joins are not allowed anyways)
    if o.match(ORDER_BY_REGEXP)
      asc = $2.upcase == DESC ? false : true
      @query.order_by($1.split('.').last, asc)
    else
      @cacheable = false
    end
  end
end
not_cacheable(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 105
def not_cacheable o
  @cacheable = false
end
Also aliased as: visit_Arel_Nodes_TableAlias, visit_Arel_Nodes_Lock, visit_Arel_Nodes_Sum, visit_Arel_Nodes_Max, visit_Arel_Nodes_Min, visit_Arel_Nodes_Avg, visit_Arel_Nodes_Count, visit_Arel_Nodes_StringJoin, visit_Arel_Nodes_InnerJoin, visit_Arel_Nodes_OuterJoin, visit_Arel_Nodes_DeleteStatement, visit_Arel_Nodes_InsertStatement, visit_Arel_Nodes_UpdateStatement, visit_Arel_Nodes_Except, visit_Arel_Nodes_Exists, visit_Arel_Nodes_Intersect, visit_Arel_Nodes_Union, visit_Arel_Nodes_UnionAll, unary, visit_Arel_Nodes_Or, visit_Arel_Nodes_NotEqual, visit_Arel_Nodes_GreaterThan, visit_Arel_Nodes_GreaterThanOrEqual, visit_Arel_Nodes_Assignment, visit_Arel_Nodes_LessThan, visit_Arel_Nodes_LessThanOrEqual, visit_Arel_Nodes_Between, visit_Arel_Nodes_NotIn, visit_Arel_Nodes_DoesNotMatch, visit_Arel_Nodes_Matches, visit_Arel_Nodes_TableAlias, visit_Arel_Nodes_Lock, visit_Arel_Nodes_Sum, visit_Arel_Nodes_Max, visit_Arel_Nodes_Min, visit_Arel_Nodes_Avg, visit_Arel_Nodes_Count, visit_Arel_Nodes_Addition, visit_Arel_Nodes_Subtraction, visit_Arel_Nodes_Multiplication, visit_Arel_Nodes_NamedFunction, visit_Arel_Nodes_Bin, visit_Arel_Nodes_Distinct, visit_Arel_Nodes_DistinctOn, visit_Arel_Nodes_Division, visit_Arel_Nodes_Except, visit_Arel_Nodes_Exists, visit_Arel_Nodes_InfixOperation, visit_Arel_Nodes_Intersect, visit_Arel_Nodes_Union, visit_Arel_Nodes_UnionAll, visit_Arel_Nodes_With, visit_Arel_Nodes_WithRecursive, visit_Arel_Nodes_StringJoin, visit_Arel_Nodes_InnerJoin, visit_Arel_Nodes_OuterJoin, visit_Arel_Nodes_DeleteStatement, visit_Arel_Nodes_InsertStatement, visit_Arel_Nodes_UpdateStatement, unary, visit_Arel_Nodes_Or, visit_Arel_Nodes_NotEqual, visit_Arel_Nodes_GreaterThan, visit_Arel_Nodes_GreaterThanOrEqual, visit_Arel_Nodes_Assignment, visit_Arel_Nodes_LessThan, visit_Arel_Nodes_LessThanOrEqual, visit_Arel_Nodes_Between, visit_Arel_Nodes_NotIn, visit_Arel_Nodes_DoesNotMatch, visit_Arel_Nodes_Matches, visit_Arel_Nodes_TableAlias, visit_Arel_Nodes_Lock, visit_Arel_Nodes_Sum, visit_Arel_Nodes_Max, visit_Arel_Nodes_Min, visit_Arel_Nodes_Avg, visit_Arel_Nodes_Count, visit_Arel_Nodes_Addition, visit_Arel_Nodes_Subtraction, visit_Arel_Nodes_Multiplication, visit_Arel_Nodes_NamedFunction, visit_Arel_Nodes_Bin, visit_Arel_Nodes_Distinct, visit_Arel_Nodes_DistinctOn, visit_Arel_Nodes_Division, visit_Arel_Nodes_Except, visit_Arel_Nodes_Exists, visit_Arel_Nodes_InfixOperation, visit_Arel_Nodes_Intersect, visit_Arel_Nodes_Union, visit_Arel_Nodes_UnionAll, visit_Arel_Nodes_With, visit_Arel_Nodes_WithRecursive, visit_Arel_Nodes_CurrentRow, visit_Arel_Nodes_Extract, visit_Arel_Nodes_Following, visit_Arel_Nodes_NamedWindow, visit_Arel_Nodes_Over, visit_Arel_Nodes_Preceding, visit_Arel_Nodes_Range, visit_Arel_Nodes_Rows, visit_Arel_Nodes_Window, visit_Arel_Nodes_StringJoin, visit_Arel_Nodes_InnerJoin, visit_Arel_Nodes_OuterJoin, visit_Arel_Nodes_DeleteStatement, visit_Arel_Nodes_InsertStatement, visit_Arel_Nodes_UpdateStatement, unary, visit_Arel_Nodes_Or, visit_Arel_Nodes_NotEqual, visit_Arel_Nodes_GreaterThan, visit_Arel_Nodes_GreaterThanOrEqual, visit_Arel_Nodes_Assignment, visit_Arel_Nodes_LessThan, visit_Arel_Nodes_LessThanOrEqual, visit_Arel_Nodes_Between, visit_Arel_Nodes_NotIn, visit_Arel_Nodes_DoesNotMatch, visit_Arel_Nodes_Matches, visit_Arel_Nodes_TableAlias, visit_Arel_Nodes_Lock, visit_Arel_Nodes_Sum, visit_Arel_Nodes_Max, visit_Arel_Nodes_Min, visit_Arel_Nodes_Avg, visit_Arel_Nodes_Count, visit_Arel_Nodes_Addition, visit_Arel_Nodes_Subtraction, visit_Arel_Nodes_Multiplication, visit_Arel_Nodes_NamedFunction, visit_Arel_Nodes_Bin, visit_Arel_Nodes_Distinct, visit_Arel_Nodes_DistinctOn, visit_Arel_Nodes_Division, visit_Arel_Nodes_Except, visit_Arel_Nodes_Exists, visit_Arel_Nodes_InfixOperation, visit_Arel_Nodes_Intersect, visit_Arel_Nodes_Union, visit_Arel_Nodes_UnionAll, visit_Arel_Nodes_With, visit_Arel_Nodes_WithRecursive, visit_Arel_Nodes_CurrentRow, visit_Arel_Nodes_Extract, visit_Arel_Nodes_Following, visit_Arel_Nodes_NamedWindow, visit_Arel_Nodes_Over, visit_Arel_Nodes_Preceding, visit_Arel_Nodes_Range, visit_Arel_Nodes_Rows, visit_Arel_Nodes_Window, visit_Arel_SelectManager, visit_Arel_Nodes_StringJoin, visit_Arel_Nodes_InnerJoin, visit_Arel_Nodes_OuterJoin, visit_Arel_Nodes_DeleteStatement, visit_Arel_Nodes_InsertStatement, visit_Arel_Nodes_UpdateStatement, unary, visit_Arel_Nodes_Or, visit_Arel_Nodes_NotEqual, visit_Arel_Nodes_GreaterThan, visit_Arel_Nodes_GreaterThanOrEqual, visit_Arel_Nodes_Assignment, visit_Arel_Nodes_LessThan, visit_Arel_Nodes_LessThanOrEqual, visit_Arel_Nodes_Between, visit_Arel_Nodes_NotIn, visit_Arel_Nodes_DoesNotMatch, visit_Arel_Nodes_Matches, visit_Arel_Nodes_TableAlias, visit_Arel_Nodes_Lock, visit_Arel_Nodes_Sum, visit_Arel_Nodes_Max, visit_Arel_Nodes_Min, visit_Arel_Nodes_Avg, visit_Arel_Nodes_Count, visit_Arel_Nodes_Addition, visit_Arel_Nodes_Subtraction, visit_Arel_Nodes_Multiplication, visit_Arel_Nodes_NamedFunction, visit_Arel_Nodes_Bin, visit_Arel_Nodes_Distinct, visit_Arel_Nodes_DistinctOn, visit_Arel_Nodes_Division, visit_Arel_Nodes_Except, visit_Arel_Nodes_Exists, visit_Arel_Nodes_InfixOperation, visit_Arel_Nodes_Intersect, visit_Arel_Nodes_Union, visit_Arel_Nodes_UnionAll, visit_Arel_Nodes_With, visit_Arel_Nodes_WithRecursive, visit_Arel_Nodes_CurrentRow, visit_Arel_Nodes_Extract, visit_Arel_Nodes_Following, visit_Arel_Nodes_NamedWindow, visit_Arel_Nodes_Over, visit_Arel_Nodes_Preceding, visit_Arel_Nodes_Range, visit_Arel_Nodes_Rows, visit_Arel_Nodes_Window, visit_Arel_SelectManager, visit_Arel_Nodes_StringJoin, visit_Arel_Nodes_InnerJoin, visit_Arel_Nodes_OuterJoin, visit_Arel_Nodes_DeleteStatement, visit_Arel_Nodes_InsertStatement, visit_Arel_Nodes_UpdateStatement, unary, visit_Arel_Nodes_Or, visit_Arel_Nodes_NotEqual, visit_Arel_Nodes_GreaterThan, visit_Arel_Nodes_GreaterThanOrEqual, visit_Arel_Nodes_Assignment, visit_Arel_Nodes_LessThan, visit_Arel_Nodes_LessThanOrEqual, visit_Arel_Nodes_Between, visit_Arel_Nodes_NotIn, visit_Arel_Nodes_DoesNotMatch, visit_Arel_Nodes_Matches
skip(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 109
def skip o
end
Also aliased as: visit_Arel_Nodes_As, visit_Arel_Nodes_As, visit_Arel_Nodes_Ascending, visit_Arel_Nodes_Descending, visit_Arel_Nodes_False, visit_Arel_Nodes_True, visit_Arel_Nodes_As, visit_Arel_Nodes_Ascending, visit_Arel_Nodes_Descending, visit_Arel_Nodes_False, visit_Arel_Nodes_True, visit_Arel_Nodes_As, visit_Arel_Nodes_Ascending, visit_Arel_Nodes_Descending, visit_Arel_Nodes_False, visit_Arel_Nodes_True, visit_Arel_Nodes_As, visit_Arel_Nodes_Ascending, visit_Arel_Nodes_Descending, visit_Arel_Nodes_False, visit_Arel_Nodes_True
unary(o)
Also aliased as: visit_Arel_Nodes_Group, visit_Arel_Nodes_Having, visit_Arel_Nodes_Not, visit_Arel_Nodes_On, visit_Arel_Nodes_UnqualifiedColumn, visit_Arel_Nodes_Group, visit_Arel_Nodes_Having, visit_Arel_Nodes_Not, visit_Arel_Nodes_On, visit_Arel_Nodes_UnqualifiedColumn, visit_Arel_Nodes_Group, visit_Arel_Nodes_Having, visit_Arel_Nodes_Not, visit_Arel_Nodes_On, visit_Arel_Nodes_UnqualifiedColumn, visit_Arel_Nodes_Group, visit_Arel_Nodes_Having, visit_Arel_Nodes_Not, visit_Arel_Nodes_On, visit_Arel_Nodes_UnqualifiedColumn, visit_Arel_Nodes_Group, visit_Arel_Nodes_Having, visit_Arel_Nodes_Not, visit_Arel_Nodes_On, visit_Arel_Nodes_UnqualifiedColumn
Alias for: not_cacheable
visit_Arel_Attributes_Attribute(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 209
def visit_Arel_Attributes_Attribute o
  o.name.to_sym
end
Also aliased as: visit_Arel_Attributes_Integer, visit_Arel_Attributes_Float, visit_Arel_Attributes_String, visit_Arel_Attributes_Time, visit_Arel_Attributes_Boolean, visit_Arel_Attributes_Decimal, visit_Arel_Attributes_Integer, visit_Arel_Attributes_Float, visit_Arel_Attributes_String, visit_Arel_Attributes_Time, visit_Arel_Attributes_Boolean, visit_Arel_Attributes_Decimal, visit_Arel_Attributes_Integer, visit_Arel_Attributes_Float, visit_Arel_Attributes_String, visit_Arel_Attributes_Time, visit_Arel_Attributes_Boolean, visit_Arel_Attributes_Decimal, visit_Arel_Attributes_Integer, visit_Arel_Attributes_Float, visit_Arel_Attributes_String, visit_Arel_Attributes_Time, visit_Arel_Attributes_Boolean, visit_Arel_Attributes_Decimal, visit_Arel_Attributes_Integer, visit_Arel_Attributes_Float, visit_Arel_Attributes_String, visit_Arel_Attributes_Time, visit_Arel_Attributes_Boolean, visit_Arel_Attributes_Decimal
visit_Arel_Attributes_Boolean(o)
visit_Arel_Attributes_Decimal(o)
visit_Arel_Attributes_Float(o)
visit_Arel_Attributes_Integer(o)
visit_Arel_Attributes_String(o)
visit_Arel_Attributes_Time(o)
visit_Arel_Nodes_Addition(o)
Alias for: not_cacheable
visit_Arel_Nodes_And(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 226
def visit_Arel_Nodes_And o
  visit(o.left)
  visit(o.right)
end
visit_Arel_Nodes_As(o)
Alias for: skip
visit_Arel_Nodes_Ascending(o)
Alias for: skip
visit_Arel_Nodes_Assignment(o)
Alias for: not_cacheable
visit_Arel_Nodes_Avg(o)
Alias for: not_cacheable
visit_Arel_Nodes_Between(o)
Alias for: not_cacheable
visit_Arel_Nodes_Bin(o)
Alias for: not_cacheable
visit_Arel_Nodes_BindParam(o)
Alias for: visit_Object
visit_Arel_Nodes_Count(o)
Alias for: not_cacheable
visit_Arel_Nodes_CurrentRow(o)
Alias for: not_cacheable
visit_Arel_Nodes_DeleteStatement(o)
Alias for: not_cacheable
visit_Arel_Nodes_Descending(o)
Alias for: skip
visit_Arel_Nodes_Distinct(o)
Alias for: not_cacheable
visit_Arel_Nodes_DistinctOn(o)
Alias for: not_cacheable
visit_Arel_Nodes_Division(o)
Alias for: not_cacheable
visit_Arel_Nodes_DoesNotMatch(o)
Alias for: not_cacheable
visit_Arel_Nodes_Equality(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 219
      def visit_Arel_Nodes_Equality o
        key, value = visit(o.left), visit(o.right)
#        p "  =====> equality found: #{key.inspect}@#{key.class.name} => #{value.inspect}@#{value.class.name}"
        @query.where(key, value)
      end
Also aliased as: visit_Arel_Nodes_In, visit_Arel_Nodes_In, visit_Arel_Nodes_In, visit_Arel_Nodes_In, visit_Arel_Nodes_In
visit_Arel_Nodes_Except(o)
Alias for: not_cacheable
visit_Arel_Nodes_Exists(o)
Alias for: not_cacheable
visit_Arel_Nodes_Extract(o)
Alias for: not_cacheable
visit_Arel_Nodes_False(o)
Alias for: skip
visit_Arel_Nodes_Following(o)
Alias for: not_cacheable
visit_Arel_Nodes_GreaterThan(o)
Alias for: not_cacheable
visit_Arel_Nodes_GreaterThanOrEqual(o)
Alias for: not_cacheable
visit_Arel_Nodes_Group(o)
Alias for: unary
visit_Arel_Nodes_Grouping(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 160
def visit_Arel_Nodes_Grouping o
  return unless @cacheable
  if @table_name && o.expr =~ GROUPING_EQUALS_REGEXP && $1 == @table_name
    @cacheable = @query.where($2, $3.to_i)
  elsif @table_name && o.expr =~ GROUPING_IN_REGEXP && $1 == @table_name
    @cacheable = @query.where($2, $3.split(',').map(&:to_i))
  else
    @cacheable = false
  end
end
visit_Arel_Nodes_Having(o)
Alias for: unary
visit_Arel_Nodes_In(o)
visit_Arel_Nodes_InfixOperation(o)
Alias for: not_cacheable
visit_Arel_Nodes_InnerJoin(o)
Alias for: not_cacheable
visit_Arel_Nodes_InsertStatement(o)
Alias for: not_cacheable
visit_Arel_Nodes_Intersect(o)
Alias for: not_cacheable
visit_Arel_Nodes_JoinSource(o) click to toggle source
# File lib/record_cache/datastore/active_record_31.rb, line 143
def visit_Arel_Nodes_JoinSource o
  # left and right are array, but using blank as it also works for nil
  @cacheable = o.left.blank? || o.right.blank?
end
visit_Arel_Nodes_LessThan(o)
Alias for: not_cacheable
visit_Arel_Nodes_LessThanOrEqual(o)
Alias for: not_cacheable
visit_Arel_Nodes_Limit(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 153
def visit_Arel_Nodes_Limit o
  @query.limit = o.expr
end
Also aliased as: visit_Arel_Nodes_Top, visit_Arel_Nodes_Top, visit_Arel_Nodes_Top, visit_Arel_Nodes_Top, visit_Arel_Nodes_Top
visit_Arel_Nodes_Lock(o)
Alias for: not_cacheable
visit_Arel_Nodes_Matches(o)
Alias for: not_cacheable
visit_Arel_Nodes_Max(o)
Alias for: not_cacheable
visit_Arel_Nodes_Min(o)
Alias for: not_cacheable
visit_Arel_Nodes_Multiplication(o)
Alias for: not_cacheable
visit_Arel_Nodes_NamedFunction(o)
Alias for: not_cacheable
visit_Arel_Nodes_NamedWindow(o)
Alias for: not_cacheable
visit_Arel_Nodes_Not(o)
Alias for: unary
visit_Arel_Nodes_NotEqual(o)
Alias for: not_cacheable
visit_Arel_Nodes_NotIn(o)
Alias for: not_cacheable
visit_Arel_Nodes_Offset(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 145
def visit_Arel_Nodes_Offset o
  @cacheable = false unless o.expr == 0
end
visit_Arel_Nodes_On(o)
Alias for: unary
visit_Arel_Nodes_Or(o)
Alias for: not_cacheable
visit_Arel_Nodes_Ordering(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 205
def visit_Arel_Nodes_Ordering o
  [visit(o.expr), o.descending]
end
visit_Arel_Nodes_OuterJoin(o)
Alias for: not_cacheable
visit_Arel_Nodes_Over(o)
Alias for: not_cacheable
visit_Arel_Nodes_Preceding(o)
Alias for: not_cacheable
visit_Arel_Nodes_Range(o)
Alias for: not_cacheable
visit_Arel_Nodes_Rows(o)
Alias for: not_cacheable
visit_Arel_Nodes_SelectCore(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 171
def visit_Arel_Nodes_SelectCore o
  @cacheable = false unless o.groups.empty?
  visit o.froms  if @cacheable
  visit o.wheres if @cacheable
  @cacheable = o.projections.none?{ |projection| projection.to_s =~ /distinct/i } unless o.projections.empty? if @cacheable
end
visit_Arel_Nodes_SelectStatement(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 178
def visit_Arel_Nodes_SelectStatement o
  @cacheable = false if o.cores.size > 1
  if @cacheable
    visit o.offset
    o.orders.map { |x| handle_order_by(visit x) } if @cacheable && o.orders.size > 0
    visit o.limit
    visit o.cores
  end
end
visit_Arel_Nodes_SqlLiteral(o)
Alias for: visit_Object
visit_Arel_Nodes_StringJoin(o)
Alias for: not_cacheable
visit_Arel_Nodes_Subtraction(o)
Alias for: not_cacheable
visit_Arel_Nodes_Sum(o)
Alias for: not_cacheable
visit_Arel_Nodes_TableAlias(o)
Alias for: not_cacheable
visit_Arel_Nodes_Top(o)
visit_Arel_Nodes_True(o)
Alias for: skip
visit_Arel_Nodes_Union(o)
Alias for: not_cacheable
visit_Arel_Nodes_UnionAll(o)
Alias for: not_cacheable
visit_Arel_Nodes_UnqualifiedColumn(o)
Alias for: unary
visit_Arel_Nodes_UpdateStatement(o)
Alias for: not_cacheable
visit_Arel_Nodes_Values(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 149
def visit_Arel_Nodes_Values o
  visit o.expressions if @cacheable
end
visit_Arel_Nodes_Window(o)
Alias for: not_cacheable
visit_Arel_Nodes_With(o)
Alias for: not_cacheable
visit_Arel_Nodes_WithRecursive(o)
Alias for: not_cacheable
visit_Arel_SelectManager(o)
Alias for: not_cacheable
visit_Arel_SqlLiteral(o)
Alias for: visit_Object
visit_Arel_Table(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 201
def visit_Arel_Table o
  @table_name = o.name
end
visit_Array(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 269
def visit_Array o
  o.map{ |x| visit x }
end
visit_BigDecimal(o)
Alias for: visit_Object
visit_Bignum(o)
Alias for: visit_Fixnum
visit_Date(o)
Alias for: visit_Object
visit_DateTime(o)
Alias for: visit_Object
visit_FalseClass(o)
Alias for: visit_Object
visit_Fixnum(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 243
def visit_Fixnum o
  o.to_i
end
Also aliased as: visit_Bignum, visit_Bignum, visit_Bignum, visit_Bignum, visit_Bignum
visit_Float(o)
Alias for: visit_Object
visit_Hash(o)
Alias for: visit_Object
visit_NilClass(o)
Alias for: visit_Object
visit_Object(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 252
def visit_Object o
  o
end
Also aliased as: visit_Arel_Nodes_SqlLiteral, visit_Arel_SqlLiteral, visit_String, visit_NilClass, visit_TrueClass, visit_FalseClass, visit_Arel_SqlLiteral, visit_BigDecimal, visit_Float, visit_Time, visit_Date, visit_DateTime, visit_Hash, visit_Arel_Nodes_SqlLiteral, visit_Arel_Nodes_BindParam, visit_Arel_SqlLiteral, visit_String, visit_NilClass, visit_TrueClass, visit_FalseClass, visit_Arel_SqlLiteral, visit_BigDecimal, visit_Float, visit_Time, visit_Date, visit_DateTime, visit_Hash, visit_Arel_Nodes_SqlLiteral, visit_Arel_Nodes_BindParam, visit_Arel_SqlLiteral, visit_String, visit_NilClass, visit_TrueClass, visit_FalseClass, visit_Arel_SqlLiteral, visit_BigDecimal, visit_Float, visit_Time, visit_Date, visit_DateTime, visit_Hash, visit_Arel_Nodes_SqlLiteral, visit_Arel_Nodes_BindParam, visit_Arel_SqlLiteral, visit_String, visit_NilClass, visit_TrueClass, visit_FalseClass, visit_Arel_SqlLiteral, visit_BigDecimal, visit_Float, visit_Time, visit_Date, visit_DateTime, visit_Hash, visit_Arel_Nodes_SqlLiteral, visit_Arel_Nodes_BindParam, visit_Arel_SqlLiteral, visit_String, visit_NilClass, visit_TrueClass, visit_FalseClass, visit_Arel_SqlLiteral, visit_BigDecimal, visit_Float, visit_Time, visit_Date, visit_DateTime, visit_Hash
visit_String(o)
Alias for: visit_Object
visit_Symbol(o) click to toggle source
# File lib/record_cache/datastore/active_record_30.rb, line 248
def visit_Symbol o
  o.to_sym
end
visit_Time(o)
Alias for: visit_Object
visit_TrueClass(o)
Alias for: visit_Object