Timestamp in UTC, abstract storage

This commit is contained in:
Gregory Eremin
2013-06-07 12:32:50 +04:00
parent 861c12aa32
commit c6f0f2480d
14 changed files with 84 additions and 32 deletions
+4 -4
View File
@@ -10,12 +10,12 @@ module Burden
@ignored_tasks = [/environment/]
end
def trigger_success_callback(name, execution_time)
on_success.send(name, execution_time) unless on_success.nil?
def trigger_success_callback(name, execution_time, timestamp)
on_success.send(name, execution_time, timestamp) unless on_success.nil?
end
def trigger_failure_callback(name, execution_time)
on_failure.send(name, execution_time) unless on_failure.nil?
def trigger_failure_callback(name, execution_time, timestamp)
on_failure.send(name, execution_time, timestamp) unless on_failure.nil?
end
module Helper
+23 -7
View File
@@ -1,25 +1,41 @@
module Burden
class Statistics
attr_reader :name, :success, :execution_time
attr_reader :name, :success, :execution_time, :timestamp
def initialize(params)
@name = params[:name]
@success = params[:success]
@execution_time = params[:execution_time]
@timestamp = params[:timestamp]
end
def save
if defined?(Rails) && Rails.respond_to?(:application) && Rails.application.present?
# FIXME: Dirty stuff
conf = Rails.configuration.database_configuration[Rails.env]
ActiveRecord::Base.establish_connection(conf)
Storage.run.create(name: name, success: success, execution_time: execution_time)
begin
Storage.run.create(name: name, success: success, execution_time: execution_time, timestamp: timestamp)
rescue
log_to_stdout(:failed)
end
else
puts
puts "------------------------------------------------------------"
puts "Rails environment is not loaded. Sending output to STDOUT"
puts "Task #{name} #{success ? 'finished successfully' : 'failed'}"
puts "Execution time: #{execution_time.round(4)}"
log_to_stdout(:no_rails)
end
end
def log_to_stdout(reason = :no_rails)
puts
puts "------------------------------------------------------------"
case reason
when :no_rails
puts "Rails environment is not loaded. Sending output to STDOUT"
when :failed
puts "Failed to persist this run. Sending output to STDOUT"
end
puts "Task #{name} #{success ? 'finished successfully' : 'failed'}"
puts "Execution time: #{execution_time.round(4)}"
end
end
end
+28
View File
@@ -0,0 +1,28 @@
module Burden
module Storage
module Abstract
class Run
attr_accessor :name, :success, :execution_time, :timestamp
def initialize(attributes = {})
@name = attributes[:name]
@success = attributes[:success]
@execution_time = attributes[:execution_time]
@timestamp = attributes[:timestamp]
end
def save
raise NotImplementedError.new('Method #save must be overwritten')
end
def summary
raise NotImplementedError.new('Method #summary must be overwritten')
end
def history(task_name)
raise NotImplementedError.new('Method #history must be overwritten')
end
end
end
end
end
+3 -2
View File
@@ -3,9 +3,10 @@ module Burden
module ActiveRecord
class Run < ::ActiveRecord::Base
self.table_name = 'burden_runs'
attr_accessible :name, :success, :execution_time
attr_accessible :name, :success, :execution_time, :timestamp
scope :summary, ->{ order('created_at desc').group(:name) }
scope :summary, ->{ order('timestamp desc').group(:name) }
scope :history, ->(task_name){ where(name: task_name).order('timestamp desc').limit(100) }
end
end
end
+3 -1
View File
@@ -8,8 +8,10 @@ module Burden
key :name, String
key :success, Boolean
key :execution_time, Float
key :timestamp, Time
scope :summary, ->{ sort(:created_at.desc).group_by(&:name) }
scope :summary, ->{ sort(:timestamp.desc).group_by(&:name) }
scope :history, ->(task_name){ where(name: task_name).sort(:timestamp.desc).group_by(&:name) }
end
end
end
+3 -1
View File
@@ -8,8 +8,10 @@ module Burden
field :name, type: String
field :success, type: Boolean
field :execution_time, type: Float
field :timestamp, type: Time
scope :summary, ->{ sort(created_at: -1).group_by(&:name) }
scope :summary, ->{ sort(timestamp: -1).group_by(&:name) }
scope :history, ->(task_name){ where(name: task_name).sort(timestamp: -1).group_by(&:name) }
end
end
end
+6 -6
View File
@@ -1,12 +1,12 @@
module Burden
class Wrapper
attr_reader :name, :description, :block, :success, :exception, :execution_time
attr_reader :name, :block, :success, :exception, :execution_time, :timestamp
def initialize(name, description, block)
def initialize(name, block)
@name = name
@description = description
@block = block
@success = true
@timestamp = Time.now.utc
end
def execute
@@ -20,11 +20,11 @@ module Burden
save_statistics
unless success
Burden.config.trigger_failure_callback(name, execution_time)
Burden.config.trigger_failure_callback(name, execution_time, timestamp)
raise(exception)
end
Burden.config.trigger_success_callback(name, execution_time)
Burden.config.trigger_success_callback(name, execution_time, timestamp)
result
end
@@ -52,7 +52,7 @@ module Burden
end
def save_statistics
Statistics.new(name: name, success: success, execution_time: execution_time).save
Statistics.new(name: name, success: success, execution_time: execution_time, timestamp: timestamp).save
end
end
end
@@ -4,7 +4,7 @@ class CreateBurdenRuns < ActiveRecord::Migration
t.string :name
t.boolean :success
t.float :execution_time
t.timestamps
t.datetime :timestamp
end
end