class FixedSizeQueue def initialize(size) @max_size = size @items = [] end def pop @items.shift end def push(item) @items.push item if @items.size > @max_size pop end end end #### 2:16% irb -r ./fsq.rb irb(main):001:0> q = FixedSizeQueue.new(3) => # irb(main):002:0> q.push 2 => nil irb(main):003:0> q.push 3 => nil irb(main):004:0> q.push 5 => nil irb(main):005:0> q => # irb(main):006:0> q.push 7 => 2 irb(main):007:0> q => # irb(main):009:0> FixedSizeQueue.instance_methods(false) => [:pop, :push]