Module: Datafusion

Defined in:
lib/datafusion.rb,
lib/datafusion/version.rb,
lib/datafusion/db_executor.rb,
lib/datafusion/integrations.rb,
lib/datafusion/debug_executor.rb,
lib/datafusion/snippet_renderer.rb

Defined Under Namespace

Classes: DbExecutor, DebugExecutor, Integrations, SnippetRenderer

Constant Summary collapse

VERSION =
"0.0.3"

Class Method Summary collapse

Class Method Details

.fuse(pguser, file) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/datafusion.rb', line 20

def self.fuse(pguser, file)
  integs = Integrations.load(file)
  out = ""
  integs.each do |k, v|
    erb = SnippetRenderer.new(v["kind"], v.merge({"user" => pguser, "name"  =>  k}))
    out += erb.render()
  end
  out
end

.logObject



11
12
13
14
# File 'lib/datafusion.rb', line 11

def self.log
  @log ||= Logger.new(STDOUT)
  @log
end

.log=(logger) ⇒ Object



16
17
18
# File 'lib/datafusion.rb', line 16

def self.log=(logger)
  @log = logger
end

.refresh(file, executor) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/datafusion.rb', line 30

def self.refresh(file, executor)
  integs = Integrations.load(file)
  schedules = integs.map do |k, v|
     v["tables"].map{|t| t["cached"] }.compact
  end.flatten
  Datafusion.log.info("Discovered #{schedules.size} schedule(s).")
  
  scheduler = Rufus::Scheduler.new
  schedules.each do |schedule|
    scheduler.every(schedule["refresh"]) do
      executor.exec(schedule)
    end
  end
  scheduler
end