Class: Afterburn::BoardInterval

Inherits:
Object
  • Object
show all
Includes:
Redis::Objects
Defined in:
lib/afterburn/board_interval.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(board, timestamp = Time.now) ⇒ BoardInterval

Returns a new instance of BoardInterval.



25
26
27
28
# File 'lib/afterburn/board_interval.rb', line 25

def initialize(board, timestamp = Time.now)
  @board = board
  @timestamp = timestamp
end

Instance Attribute Details

#boardObject (readonly)

Returns the value of attribute board.



8
9
10
# File 'lib/afterburn/board_interval.rb', line 8

def board
  @board
end

#timestampObject (readonly)

Returns the value of attribute timestamp.



8
9
10
# File 'lib/afterburn/board_interval.rb', line 8

def timestamp
  @timestamp
end

Class Method Details

.find(id) ⇒ Object



10
11
12
13
14
# File 'lib/afterburn/board_interval.rb', line 10

def self.find(id)
  board_id, timestamp_string = Base64.decode64(id).split(":")
  return nil if board_id.nil?
  new(Board.find(board_id), Time.at(timestamp_string.to_i))
end

.find_all(ids) ⇒ Object



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

def self.find_all(ids)
  ids.map { |interval_id| find(interval_id) }.compact
end

.record(board, timestamp) ⇒ Object

TODO test



21
22
23
# File 'lib/afterburn/board_interval.rb', line 21

def self.record(board, timestamp)
  new(board, timestamp).tap { |board_interval| board_interval.record! }
end

Instance Method Details

#==(other) ⇒ Object



42
43
44
# File 'lib/afterburn/board_interval.rb', line 42

def ==(other)
  self.class == other.class && !other.id.nil? && self.id == other.id
end

#idObject



30
31
32
# File 'lib/afterburn/board_interval.rb', line 30

def id
  @id ||= Base64.encode64("#{@board.id}:#{@timestamp.to_i}")
end

#list_metricsObject



34
35
36
# File 'lib/afterburn/board_interval.rb', line 34

def list_metrics
  @list_metrics ||= ListMetric.for_timestamp(@board.lists, timestamp)
end

#record!Object



38
39
40
# File 'lib/afterburn/board_interval.rb', line 38

def record!
  list_metrics.map(&:count!)
end