eruby: problem defining a new method for Array

D

Davi Barbosa

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:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>error</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>

<body>

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

print [1,2,3].to_hash
%>
</body>


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:in `eval_string_wrap'
/usr/lib/ruby/1.8/apache/eruby-run.rb:116:in `run'
/usr/lib/ruby/1.8/apache/eruby-debug.rb:70:in `run'
/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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
[omitted output]
<body>

testing
</body>


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

Calamitas

[Note: parts of this message were removed to make it a legal post.]

On Thu, Oct 2, 2008 at 4:19 PM, Davi Barbosa
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>error</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>

<body>

<%
class Array


class ::Array

def to_hash
{'test' => 'ing'}
end
end

print [1,2,3].to_hash
%>
</body>

Peter
 
D

Davi Barbosa

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.
 
C

Calamitas

[Note: parts of this message were removed to make it a legal post.]

On Thu, Oct 2, 2008 at 11:14 PM, Davi Barbosa
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
 
D

Davi Barbosa

Thank you, now it works!
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 :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,185
Members
46,736
Latest member
AdolphBig6

Latest Threads

Top