class Matt::Configuration

Constants

DEBUG_INFO
DEBUG_SILENT
DEBUG_VERBOSE

Attributes

at_predicate[RW]
csv_options[RW]
debug_level[RW]
folder[RW]
stderr[RW]
stdout[RW]

Public Class Methods

new(folder) { |self| ... } click to toggle source
# File lib/matt/configuration.rb, line 8
def initialize(folder)
  @folder = folder
  @stdout = $stdout
  @stderr = $stderr
  @csv_options = {
    :write_headers => true
  }
  @at_predicate = Matt.yesterday_predicate
  @debug_level = DEBUG_INFO
  yield(self) if block_given?
end

Public Instance Methods

datasources() click to toggle source
# File lib/matt/configuration.rb, line 29
def datasources
  @datasources ||= load_dynamic_objects(datasources_folder, Matt::Datasource)
end
Also aliased as: ds
datasources_folder() click to toggle source
# File lib/matt/configuration.rb, line 25
def datasources_folder
  folder/"datasources"
end
ds()
Alias for: datasources
es()
Alias for: exporters
exporters() click to toggle source
# File lib/matt/configuration.rb, line 47
def exporters
  @exporters ||= load_dynamic_objects(exporters_folder, Matt::Exporter)
end
Also aliased as: es
exporters_folder() click to toggle source
# File lib/matt/configuration.rb, line 43
def exporters_folder
  folder/"exporters"
end
measures() click to toggle source
# File lib/matt/configuration.rb, line 38
def measures
  @measures ||= load_dynamic_objects(measures_folder, Matt::Measure)
end
Also aliased as: ms
measures_folder() click to toggle source
# File lib/matt/configuration.rb, line 34
def measures_folder
  folder/"measures"
end
ms()
Alias for: measures

Private Instance Methods

load_dynamic_object(file) click to toggle source
# File lib/matt/configuration.rb, line 70
def load_dynamic_object(file)
  self.instance_eval(file.read, file.to_s)
end
load_dynamic_objects(folder, expected_type) click to toggle source
# File lib/matt/configuration.rb, line 54
def load_dynamic_objects(folder, expected_type)
  struct = OpenStruct.new
  folder.glob("*.rb").each_with_object(struct) do |file,memo|
    obj = load_dynamic_object(file)
    if obj.nil?
      raise "Wrong file #{file}: eval returned nil"
    elsif !obj.is_a?(expected_type)
      raise "Wrong file #{file}: must include #{expected_type}"
    else
      obj.configuration = self
      obj.name = file.basename.rm_ext.to_s
      memo.send("#{obj.name}=", obj)
    end
  end
end