class Convertator::Middlewares::FileCacheMiddleware
Constants
- DEFAULT_TTL
Public Class Methods
new(file, ttl = DEFAULT_TTL)
click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 9 def initialize(file, ttl = DEFAULT_TTL) @file = file_open(file) @ttl = ttl end
Public Instance Methods
call()
click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 14 def call @file.flock(::File::LOCK_EX) if file_zero? || file_old? data = @prev.call file_write(data.to_json) else data = JSON.parse(file_read) end @file.flock(::File::LOCK_UN) data end
Private Instance Methods
file_old?()
click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 45 def file_old? @ttl < (::Time.new.to_i - @file.mtime.to_i) end
file_open(file)
click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 36 def file_open(file) ::File.new(file, 'w+') end
file_read()
click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 28 def file_read ::File.read(@file.path) end
file_write(data)
click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 40 def file_write(data) @file.rewind @file.write data end
file_zero?()
click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 32 def file_zero? File.zero? @file.path end