25 lines
455 B
Ruby
25 lines
455 B
Ruby
|
require 'thread'
|
||
|
require 'time'
|
||
|
|
||
|
module SimpleCache
|
||
|
@cache = {}
|
||
|
@semaphore = Mutex.new
|
||
|
|
||
|
class << self
|
||
|
def store(name, value, timeout=30)
|
||
|
@semaphore.synchronize {
|
||
|
@cache[name] = {value: value, expires_at: Time.now+timeout}
|
||
|
}
|
||
|
value
|
||
|
end
|
||
|
|
||
|
def get(name)
|
||
|
@cache[name][:value]
|
||
|
end
|
||
|
|
||
|
def expired?(name)
|
||
|
return false if @cache[name] && @cache[name][:expires_at] > Time.now
|
||
|
true
|
||
|
end
|
||
|
end
|
||
|
end
|