Class: Crufty::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/crufty/context.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(best_by, expires, backtrace = nil) ⇒ Context

Returns a new instance of Context.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/crufty/context.rb', line 7

def initialize(best_by, expires, backtrace=nil)
  @invoke = true

  if datetimeish?(best_by) && datetimeish?(expires)
    @invoked_at = DateTime.now
  elsif timeish?(best_by) && timeish?(expires)
    @invoked_at = Time.now
  else
    raise ArgumentError, "Unexpected time params: #{best_by.class} and #{expires.class}"
  end
  
  @best_by = best_by
  @expires = expires
  @backtrace = backtrace
end

Instance Attribute Details

#backtraceObject (readonly)

Returns the value of attribute backtrace.



5
6
7
# File 'lib/crufty/context.rb', line 5

def backtrace
  @backtrace
end

#best_byObject (readonly)

Returns the value of attribute best_by.



5
6
7
# File 'lib/crufty/context.rb', line 5

def best_by
  @best_by
end

#expiresObject (readonly)

Returns the value of attribute expires.



5
6
7
# File 'lib/crufty/context.rb', line 5

def expires
  @expires
end

#invokeObject (readonly)

Returns the value of attribute invoke.



5
6
7
# File 'lib/crufty/context.rb', line 5

def invoke
  @invoke
end

#invoked_atObject (readonly)

Returns the value of attribute invoked_at.



5
6
7
# File 'lib/crufty/context.rb', line 5

def invoked_at
  @invoked_at
end

Instance Method Details

#expired?Boolean

Returns:

  • (Boolean)


39
40
41
42
43
44
45
# File 'lib/crufty/context.rb', line 39

def expired?
  if @expires.nil?
    false
  else
    @invoked_at >= @expires
  end
end

#fresh?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/crufty/context.rb', line 27

def fresh?
  !stale? && !expired?
end

#stale?Boolean

Returns:

  • (Boolean)


31
32
33
34
35
36
37
# File 'lib/crufty/context.rb', line 31

def stale?
  if @best_by.nil?
    true
  else
    @invoked_at >= @best_by
  end
end

#stateObject



23
24
25
# File 'lib/crufty/context.rb', line 23

def state
  @state ||= (expired? ? :expired : (stale? ? :stale : :fresh))
end