Define_method

Hi Guys,

I am trying to use define_method like:

class TestClass
def initialize
define_method(“hello”) { || puts “Hello” }
end
end

x = TestClass.new
x.hello

I am always getting:
NoMethodError: undefined method `define_method’

Do I need to require something? Am I doing something wrong, or am I
completely missing the boat!?

Any help appreciated!

Thanks,
Malcolm.

On Nov 6, 11:37 pm, “Malcolm L.” [email protected] wrote:

Hi Guys,

I am trying to use define_method like:

def selfclass
(class << self; self; end)
end

class TestClass
def initialize
selfclass.send(:define_method, “hello”) { || puts “Hello” }
end
end

x = TestClass.new
x.hello

You are getting this error since define_method is defined in Module
not Object. Your object needs to call define_method against it’s Class
definition, not self.

Here’s an example how to use it.
http://www.ruby-doc.org/core/classes/Module.html#M001677

Best,
Jake

2007/11/7, Malcolm L. [email protected]:

x = TestClass.new
x.hello

I am always getting:
NoMethodError: undefined method `define_method’

Do I need to require something? Am I doing something wrong, or am I
completely missing the boat!?

Is this really your use case? Since you know which method you define,
you can do it with a normal def anyway. So I suspect that you are
doing something else. What exactly is it?

Kind regards

robert

Hey, thanks for the replies guys, I am pretty noob with ruby so thanks
for your help.

Yes Robert, that wasn’t my use case - that was just the most
simplified code that shows the problem I was having. I didn’t want to
bore you all with loads of irrelevant code. If you are interested I
was trying to build a dynamic enumeration style class (vaguely similar
to java or c#'s way of doing it), where I could have the pseudo
constant (i.e. TestClass.Blue, TestClass.Red etc.) setup by calling
the constructor something like TestClass.new(:Blue => 1, :Red => 2
etc.) and also be able to iterate through the keys and stuff.

Anyway, thanks again for your help guys.
Malcolm

Please do not top post.

On 07.11.2007 22:19, Malcolm L. wrote:

Yes Robert, that wasn’t my use case - that was just the most
simplified code that shows the problem I was having. I didn’t want to
bore you all with loads of irrelevant code. If you are interested I
was trying to build a dynamic enumeration style class (vaguely similar
to java or c#'s way of doing it), where I could have the pseudo
constant (i.e. TestClass.Blue, TestClass.Red etc.) setup by calling
the constructor something like TestClass.new(:Blue => 1, :Red => 2
etc.) and also be able to iterate through the keys and stuff.

In case you are not doing it for the fun of it and / or are looking for
more inspirations this is a good place to look:

http://raa.ruby-lang.org/search.rhtml?search=enum

Kind regards

robert