class Traceindex
Constants
- VERSION
Public Class Methods
new(app)
click to toggle source
# File lib/traceindex.rb, line 10 def initialize(app) @app = app @ignore_models = [] @ignore_columns = [] @ignore_foreign_keys = [] (config["ignore_models"] || []).each do |ignored_model| @ignore_models << ignored_model end (config["ignore_columns"] || []).each do |ignored_column| @ignore_columns << ignored_column end (config["ignore_foreign_keys"] || []).each do |ignored_column| @ignore_foreign_keys << ignored_column end end
Public Instance Methods
missing_foreign_keys()
click to toggle source
# File lib/traceindex.rb, line 49 def missing_foreign_keys models.each.with_object([]) do |model, missing_columns| id_columns = model.columns.select {|column| column.name.end_with?("_id") } foreign_keys = ActiveRecord::Base.connection.foreign_keys(model.table_name) id_columns.each do |id_column| if @ignore_foreign_keys.include?("#{model.table_name}.#{id_column.name}") next end next unless foreign_keys.none? { |index| index.column == id_column.name } missing_columns << "#{model.table_name}.#{id_column.name}" end rescue => e puts e.message end end
missing_index_column_names()
click to toggle source
# File lib/traceindex.rb, line 29 def missing_index_column_names models.each.with_object([]) do |model, missing_index_columns| id_columns = model.columns.select {|column| column.name.end_with?("_id") } indexes = ActiveRecord::Base.connection.indexes(model.table_name) id_columns.each do |id_column| if @ignore_columns.include?("#{model.table_name}.#{id_column.name}") next end next unless indexes.none? {|index| index.columns.first == id_column.name } missing_index_columns << "#{model.table_name}.#{id_column.name}" end rescue => e puts e.message end end
Private Instance Methods
config()
click to toggle source
# File lib/traceindex.rb, line 74 def config @config ||= config_filename ? YAML.load_file(config_filename) : {} end
config_filename()
click to toggle source
# File lib/traceindex.rb, line 70 def config_filename %w[.traceindex.yaml .traceindex.yml].detect {|f| File.exist?(f) } end
models()
click to toggle source
# File lib/traceindex.rb, line 78 def models return @models if @models @app.eager_load! @models ||= ActiveRecord::Base.descendants.reject(&:abstract_class).reject do |model| @ignore_models.include?(model.name) end end