from _The Ruby Programming Language_ :

In Ruby 1.9, the selection methods described previously are augmented  
by first, take, drop, take_while, and drop_while. first returns the  
first element of an Enumerable object, or, given an integer argument  
n, an array containing the first n elements. take and drop expect an  
integer argument.take behaves just like first; it returns an array of  
the first n elements of the Enumerable receiver object. drop does the  
opposite; it returns an array of all elements of the Enumerable except  
for the first n:

p (1..5).first(2) # => [1,2]
p (1..5).take(3) # => [1,2,3]
p (1..5).drop(3) # => [4,5]

So it looks like it's acting exactly as defined.  I think the behavior  
your expecting is delete
arr = [1,2,3]
arr.delete(1) # => 1
arr # => [2, 3]


On Jul 19, 2008, at 11:28 AM, Robert Dober wrote:

> Is it just me, or is there general confusion?
>
> First of all #drop is not receiver modifying as is e.g. shift.
>
> 507/7 > ruby1.9 -e 'x=[1,2,3];x.drop(1);p x'
> [1, 2, 3]
>
> And then drop (n) is not returning the first n elements of an array
> but all but the first n
>
> 512/12 > ruby1.9 -e 'p [1,2,3].drop(1)'
> [2, 3]
>
> thus the workaround implementation of 1.8.7.pred would rather be:
> class Array
>   def drop n; self[n..-1] end
> end
>
> HTH
> Robert
> -- 
> http://ruby-smalltalk.blogspot.com/
>
> ---
> AALST (n.) One who changes his name to be further to the front
> D.Adams; The Meaning of LIFF
>