class YeetDba::MissingForeignKeys

Public Class Methods

config() click to toggle source
# File lib/yeet_dba/missing_foreign_keys.rb, line 31
def self.config
  @config ||= begin
    config_file = Pathname.new(Rails.root).join('.yeet_dba.yml')

    if File.exist?(config_file)
      YAML.load(File.read(config_file))
    else
      {}
    end
  end
end
eager_load!() click to toggle source
# File lib/yeet_dba/missing_foreign_keys.rb, line 19
def self.eager_load!
  Rails.application.eager_load! if defined?(Rails) && !Rails.env.test?
end
foreign_keys() click to toggle source
# File lib/yeet_dba/missing_foreign_keys.rb, line 3
def self.foreign_keys
  eager_load!
  tables.map do |table_name|
    Table.new(table_name: table_name,
              tables: tables).missing_keys
  end.flatten
end
ignored_tables() click to toggle source
# File lib/yeet_dba/missing_foreign_keys.rb, line 27
def self.ignored_tables
  config['exclude_tables'] || []
end
invalid_columns() click to toggle source
# File lib/yeet_dba/missing_foreign_keys.rb, line 11
def self.invalid_columns
  eager_load!
  tables.map do |table_name|
    Table.new(table_name: table_name,
              tables: tables).invalid_columns
  end.flatten
end
tables() click to toggle source
# File lib/yeet_dba/missing_foreign_keys.rb, line 23
def self.tables
  ActiveRecord::Base.connection.tables - self.ignored_tables
end