Eruby: problem defining a new method for Array

Hello,
I installed eruby yesterday and I spend all night programming…
I’m trying to define a new method for class Array but apache2+mod_ruby
can’t find the method!
A create a simple example:

error

<%
class Array
def to_hash
{‘test’ => ‘ing’}
end
end

print [1,2,3].to_hash
%>

When I try to open this page, I get this error:
simple.rhtml:18: undefined method to_hash' for [1, 2, 3]:Array (eval):117 /usr/lib/ruby/1.8/apache/eruby-run.rb:116:ineval_string_wrap’
/usr/lib/ruby/1.8/apache/eruby-run.rb:116:in run' /usr/lib/ruby/1.8/apache/eruby-debug.rb:70:inrun’
/usr/lib/ruby/1.8/apache/eruby-debug.rb:56:in `handler’

If I try the same code in a sample ruby script, it works. Even if I try
directly with eruby it works:

$ eruby simple.rhtml

[omitted output]

testing

Anyone have any idea?
Also, someone knows where to ask? I searched for a eruby mailing list or
forum but I did not find.

On Thu, Oct 2, 2008 at 4:19 PM, Davi Barbosa
<[email protected][email protected]

wrote:

<%
class Array

class ::Array

def to_hash
{‘test’ => ‘ing’}
end
end

print [1,2,3].to_hash
%>

Peter

Thank you for the answer Peter, but the problem remains. Your suggestion
works on ruby, irb, and eruby if I run directly from the shell, but when
I try to open the page I get an “undefined method” error.

On Thu, Oct 2, 2008 at 11:14 PM, Davi Barbosa
<[email protected][email protected]

wrote:

Thank you for the answer Peter, but the problem remains. Your suggestion
works on ruby, irb, and eruby if I run directly from the shell, but when
I try to open the page I get an “undefined method” error.

It was a long shot as I’ve never used mod_ruby so I can’t test any fix.

Can you try this instead?

class Object::Array
def to_hash
{‘test’ => ‘ing’}
end
end

Nonetheless it’s probably better style to put any definitions in a
separate
Ruby file and requiring it from the rhtml file.

Peter

Thank you, now it works!

Calamitas wrote:

Nonetheless it’s probably better style to put any definitions in a
separate
Ruby file and requiring it from the rhtml file.

Peter

I’m doing this :slight_smile: