Class: Sidenotes::Verifier

Inherits:
Object
  • Object
show all
Defined in:
lib/sidenotes/verifier.rb

Defined Under Namespace

Classes: Drift

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeVerifier

Returns a new instance of Verifier.



12
13
14
15
16
# File 'lib/sidenotes/verifier.rb', line 12

def initialize
  @drifts = []
  @missing_sidecars = []
  @checked_count = 0
end

Instance Attribute Details

#checked_countObject (readonly)

Returns the value of attribute checked_count.



10
11
12
# File 'lib/sidenotes/verifier.rb', line 10

def checked_count
  @checked_count
end

#driftsObject (readonly)

Returns the value of attribute drifts.



10
11
12
# File 'lib/sidenotes/verifier.rb', line 10

def drifts
  @drifts
end

#missing_sidecarsObject (readonly)

Returns the value of attribute missing_sidecars.



10
11
12
# File 'lib/sidenotes/verifier.rb', line 10

def missing_sidecars
  @missing_sidecars
end

Instance Method Details

#drift?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/sidenotes/verifier.rb', line 45

def drift?
  drifts.any? || missing_sidecars.any?
end

#issue_countObject



49
50
51
# File 'lib/sidenotes/verifier.rb', line 49

def issue_count
  drifts.sum { |d| d.issues.size } + missing_sidecars.size
end

#verify_allObject



18
19
20
21
22
# File 'lib/sidenotes/verifier.rb', line 18

def verify_all
  generator = Generator.new
  generator.discover_models.each { |model| verify_model(model) }
  self
end

#verify_model(model) ⇒ Object



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

def verify_model(model)
  inspector = ModelInspector.new(model)
  return unless inspector.inspectable?

  @checked_count += 1
  sidecar = sidecar_path_for(model)

  unless File.exist?(sidecar)
    @missing_sidecars << model.name
    return
  end

  stored = parse_sidecar(sidecar, model.name)
  current = inspector.inspect_model
  issues = compare(stored, current)

  return if issues.empty?

  @drifts << Drift.new(model_name: model.name, sidecar_path: sidecar, issues: issues)
end