Class: Bookworm::KnowledgeBase

Inherits:
Object
  • Object
show all
Defined in:
lib/bookworm/knowledge_base.rb

Overview

The KnowledgeBase is a backend-agnostic way of storing and querying information that’s generated about the files via InferRules.

We provide indirect access to the information stored by the knowledge base, so that we’ll soon be able to leverage different backends (for concurrent writes, caching rule output across runs, etc).

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ KnowledgeBase

Returns a new instance of KnowledgeBase.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/bookworm/knowledge_base.rb', line 44

def initialize(opts)
  extend Bookworm::KnowledgeBaseBackends::SimpleHash

  init_hooks

  # TODO: Only initialize keys required by rules
  BOOKWORM_KEYS.each do |k, v|
    unless v['dont_init_kb_key']
      if v['determine_cookbook_name']
        init_key_with_cookbook_name(k, opts[k] || [])
      else
        init_key(k, opts[k] || [])
      end
    end
    create_pluralized_getter(k)
  end
end

Instance Method Details

#[](_key) ⇒ Object



66
67
68
# File 'lib/bookworm/knowledge_base.rb', line 66

def [](_key)
  backend_missing
end

#[]=(_key, _value) ⇒ Object



70
71
72
# File 'lib/bookworm/knowledge_base.rb', line 70

def []=(_key, _value)
  backend_missing
end

#backend_missingObject



62
63
64
# File 'lib/bookworm/knowledge_base.rb', line 62

def backend_missing
  fail 'Need to specify a backend for KnowledgeBase class'
end

#init_hooksObject



74
75
76
# File 'lib/bookworm/knowledge_base.rb', line 74

def init_hooks
  # This is optional for KnowledgeBaseBackends
end