Class: PgReports::ReportLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/pg_reports/report_loader.rb

Overview

Loads YAML report definitions from the definitions directory

Class Method Summary collapse

Class Method Details

.definitions_pathObject



29
30
31
# File 'lib/pg_reports/report_loader.rb', line 29

def self.definitions_path
  Pathname.new(__dir__).join("definitions")
end

.get(module_name, report_name) ⇒ Object



25
26
27
# File 'lib/pg_reports/report_loader.rb', line 25

def self.get(module_name, report_name)
  load_all.dig(module_name.to_s, report_name.to_s)
end

.load_allObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/pg_reports/report_loader.rb', line 8

def self.load_all
  @definitions ||= begin
    definitions = {}

    Dir.glob(definitions_path.join("**/*.yml")).each do |yaml_file|
      definition = ReportDefinition.new(yaml_file)
      module_name = definition.config["module"]
      report_name = definition.config["name"]

      definitions[module_name] ||= {}
      definitions[module_name][report_name] = definition
    end

    definitions
  end
end

.reload!Object



33
34
35
36
# File 'lib/pg_reports/report_loader.rb', line 33

def self.reload!
  @definitions = nil
  load_all
end