def take(tokens)
      raise ArgumentError.new('tokens must be > 0') unless tokens > 0
      tokens <= fill ? @tokens -= tokens : false
    end
def take(tokens)
      raise ArgumentError.new('tokens must be > 0') unless tokens > 0
      tokens <= fill ? @tokens -= tokens : false
    end
Create a full bucket with `capacity` number of tokens to be filled
 at the given rate of tokens/second.

 capacity - The Fixnum maximum number of tokens the bucket can hold.
 rate     - The Fixnum number of tokens per second at which the bucket is
            refilled.
 Remove tokens from the bucket if it's full enough. There's no way, or
 need, to add tokens to the bucket. It refills over time.

 tokens - The Fixnum number of tokens to attempt to take from the bucket.

 Returns true if the bucket contains enough tokens to take, false if the
 bucket isn't full enough to satisy the request.