Class: DailyReport

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
SharedBehaviors
Defined in:
app/models/daily_report.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SharedBehaviors

included

Class Method Details

.formattersObject



21
22
23
# File 'app/models/daily_report.rb', line 21

def self.formatters
  Ruport::Controller::Table.formats.keys
end

Instance Method Details

#file_exists?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/models/daily_report.rb', line 42

def file_exists?
  File.file?(localfile)
end

#generate!Object



46
47
48
49
50
51
52
53
54
# File 'app/models/daily_report.rb', line 46

def generate!
  Dir.mkdir(localdir) unless File.directory?(localdir)
  touch(:generate_started_at)
  data = table.result
  data = apply_transform(data)
  val = save_as!(data, localfile)
  touch(:generate_ended_at)
  val
end

#localdirObject



29
30
31
# File 'app/models/daily_report.rb', line 29

def localdir
  "#{Rails.root}/#{parent}"
end

#localfileObject



33
34
35
# File 'app/models/daily_report.rb', line 33

def localfile
  "#{localdir}/#{filename}"
end

#next_jobObject



79
80
81
# File 'app/models/daily_report.rb', line 79

def next_job
  jobs.by_priority.first
end

#parentObject



25
26
27
# File 'app/models/daily_report.rb', line 25

def parent
  "files/#{table.guid}"
end

#queue_next!Object



64
65
66
67
68
69
70
# File 'app/models/daily_report.rb', line 64

def queue_next!
  job = GenerateReportJob.new(id, true)
  Delayed::Job.enqueue :payload_object => job, 
                       :priority => 10,
                       :run_at => calculate_next_gen_time,
                       :report_id => id
end

#queue_now!Object



72
73
74
75
76
77
# File 'app/models/daily_report.rb', line 72

def queue_now!
  job = GenerateReportJob.new(id, false)
  Delayed::Job.enqueue :payload_object => job, 
                       :priority => 0,
                       :report_id => id
end

#save_as!(data, path) ⇒ Object



56
57
58
59
60
61
62
# File 'app/models/daily_report.rb', line 56

def save_as!(data, path)
  tempfile = "#{Rails.root}/process/#{Time.now.to_i}_#{rand(9999999)}_#{rand(9999999)}.tmp"
  return false unless data.as(formatter.to_sym, (formatter_data || {}).merge(:file => tempfile))
  return false unless File.file?(tempfile)
  File.rename(tempfile, path)
  File.file?(path)
end

#url(root) ⇒ Object



37
38
39
40
# File 'app/models/daily_report.rb', line 37

def url(root)
  root += "/" unless root[-1, 1] == "/"
  "#{root}#{parent}/#{filename}"
end