Skip to content

Instantly share code, notes, and snippets.

@eerohele
Last active October 29, 2018 12:00
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save eerohele/1904422 to your computer and use it in GitHub Desktop.
Save eerohele/1904422 to your computer and use it in GitHub Desktop.
A simple ring buffer for Ruby.
class RingBuffer < Array
attr_reader :max_size
def initialize(max_size, enum = nil)
@max_size = max_size
enum.each { |e| self << e } if enum
end
def <<(el)
if self.size < @max_size || @max_size.nil?
super
else
self.shift
self.push(el)
end
end
alias :push :<<
end
@captainpete
Copy link

Also check out this threadsafe one http://git.io/8RZjeA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment