Rails console

I tried to create an addition to Enumerable called choose_randomly that picks a random element from the Enumerable object. However when I define it and execute the code rand complains about the wrong number of arguments. Below is a capture of the ./script/console session.

farrel@nicodemus ~/Work/GreenGreen/Code/green_green_client_application $ ./script/console Loading development environment (Rails 2.1.2)

[1,2,3].choose_randomly

NoMethodError: undefined method `choose_randomly' for [1, 2, 3]:Array   from (irb):1

module Enumerable   def choose_randomly     array_of_self = Array( self )     index = rand( array_of_self.size )     array_of_self[ index ]   end end

=> nil

[1,2,3].choose_randomly

ArgumentError: wrong number of arguments (1 for 0)   from (irb):5:in `rand'   from (irb):5:in `choose_randomly'   from (irb):9

[1,2,3][ rand( [1,2,3].size )]

=> 1

As you can see if I execute the code myself it seems to work. If I copy that same code into irb it works perfectly.

Any ideas?

Farrel

As you can see if I execute the code myself it seems to work. If I copy that same code into irb it works perfectly.

You're calling Array#rand (a private method Array defines), whereas
you want to call Kernel#rand. Replace rand with Kernel.rand and you
should be ok

Fred

That was it. Thanks for the tip. I didn't know Rails added in it's own rand method into Array.

Farrel