Sha256: 409d1a043b2399b0561a9cea40f9482668a86bf26dc483a88a7d2140b367c0e8
Contents?: true
Size: 628 Bytes
Versions: 2
Compression:
Stored size: 628 Bytes
Contents
module TaskHelper module API class Cache def initialize(limit: 0, **call_defaults) @limit = limit @call_defaults = call_defaults @calls = [] end def get(**args) new_call = Call.new(@call_defaults.merge(args)) cached_call = @calls.find { |call| call == new_call } if cached_call cached_call.run else @calls << new_call sort_calls.pop if @calls.size > @limit new_call.run end end private def sort_calls @calls.sort! { |x, y| y.time <=> x.time } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
task_helper-0.0.3 | lib/task_helper/api/cache.rb |
task_helper-0.0.2 | lib/task_helper/api/cache.rb |