Class: Traceindex
- Inherits:
-
Object
- Object
- Traceindex
- Defined in:
- lib/traceindex.rb
Defined Under Namespace
Classes: Railtie
Constant Summary collapse
- VERSION =
Gem.loaded_specs['traceindex'].version.to_s
Instance Method Summary collapse
-
#initialize(app) ⇒ Traceindex
constructor
A new instance of Traceindex.
- #missing_foreign_keys ⇒ Object
- #missing_index_column_names ⇒ Object
Constructor Details
#initialize(app) ⇒ Traceindex
Returns a new instance of Traceindex.
10 11 12 13 14 15 16 |
# File 'lib/traceindex.rb', line 10 def initialize(app) @app = app @ignore_models = (config["ignore_models"] || []) @ignore_columns = (config["ignore_columns"] || []) @ignore_foreign_keys = (config["ignore_foreign_keys"] || []) @ignore_tables = (config["ignore_tables"] || []) end |
Instance Method Details
#missing_foreign_keys ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/traceindex.rb', line 38 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. end end |
#missing_index_column_names ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/traceindex.rb', line 18 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. end end |