class Scopedog::RecordClass

@attr_reader yard_obj [YARD::CodeObjects::ClassObject] @attr_reader ar_class [Class<ActiveRecord::Base>]

Attributes

ar_class[R]
yard_obj[R]

Public Class Methods

all(docs: YARD::Registry.all, root_const: Object) click to toggle source

@param docs [Array<YARD::CodeObjects::Base>] @return [Array<RecordClass>]

# File lib/scopedog/record_class.rb, line 11
def self.all(docs: YARD::Registry.all, root_const: Object)
  docs
    .select { |d| d.type == :class && d.has_tag?(:record) }
    .each { |d| require_relative d.file if d.file != '(stdin)' }
    .map { |d| [d, root_const.const_get(d.path)] }
    .select { |(_, c)| c.ancestors.include?(ActiveRecord::Base) && !c.abstract_class? }
    .map { |d, c| RecordClass.new(d, c, root_const: root_const) }
end
new(yard_obj, ar_class, root_const: Object) click to toggle source

@param yard_obj [YARD::CodeObjects::ClassObject] @param ar_class [Class<ActiveRecord::Base>]

# File lib/scopedog/record_class.rb, line 22
def initialize(yard_obj, ar_class, root_const: Object)
  @yard_obj = yard_obj
  @ar_class = ar_class
  @root_const = root_const
end

Public Instance Methods

default_sql() click to toggle source

@return [String]

# File lib/scopedog/record_class.rb, line 51
def default_sql
  ar_class.all.to_sql
end
docstring() click to toggle source

@return [String]

# File lib/scopedog/record_class.rb, line 34
def docstring
  yard_obj.docstring
end
name() click to toggle source

@return [String]

# File lib/scopedog/record_class.rb, line 29
def name
  ar_class.name.gsub(/^#{@root_const.name}::/, '')
end
scopes() click to toggle source

@return [Array<YARD::CodeObjects::MethodObject>]

# File lib/scopedog/record_class.rb, line 44
def scopes
  @scopes ||= yard_obj.meths
    .select { |m| m.has_tag?(:scoping) }
    .map { |m| Scope.new(self, m) }
end
table_name() click to toggle source

@return [String]

# File lib/scopedog/record_class.rb, line 39
def table_name
  ar_class.table_name
end
unscoped_sql() click to toggle source

@return [String]

# File lib/scopedog/record_class.rb, line 56
def unscoped_sql
  ar_class.all.unscoped.to_sql
end