Class: IMissValidator::Inspector

Inherits:
Object
  • Object
show all
Defined in:
lib/i_miss_validator/inspector.rb

Defined Under Namespace

Classes: AcceptanceInspector, LengthInspector, NumericalityInspector, PresenceInspector

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(models_path, inspectors = []) ⇒ Inspector

Returns a new instance of Inspector.



6
7
8
9
10
# File 'lib/i_miss_validator/inspector.rb', line 6

def initialize(models_path, inspectors = [])
  @models_path = models_path
  @inspectors = inspectors
  @results = []
end

Instance Attribute Details

#resultsObject (readonly)

Returns the value of attribute results.



4
5
6
# File 'lib/i_miss_validator/inspector.rb', line 4

def results
  @results
end

Instance Method Details

#inspectObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/i_miss_validator/inspector.rb', line 24

def inspect
  models.each do |model|
    begin
      model.columns
    rescue
      puts "No schema in model class #{model.to_s}"
      next
    end

    problems = @inspectors.map do |inspector|
      inspector.inspect(model)
    end

    @results << {
      model: model.to_s,
      problems: problems.flatten.compact.group_by {|pb| pb[:column] }
    }
  end
end

#modelsObject



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/i_miss_validator/inspector.rb', line 12

def models
  Dir.glob(File.join(@models_path, "**", "*.rb")).sort.each do |filename|
    begin
      Kernel.require_dependency filename
    rescue
      puts "Not a class #{filename}"
    end
  end

  ActiveRecord::Base.descendants.sort_by(&:name)
end