Getting name of current method

Ruby has FILE and LINE to give the file and line omber where we
are currently at in the code.

Consider
Class X
def my_method
m = ??? # I want m to be assigned “my_method”
end
end

How can I get m set properly?

I guess I could use define_method to define my_method and then pass the
name into the function … but that is so ugly and also flattens scope
that I may not want flattened.

On Sep 3, 2010, at 17:44 , Ralph S. wrote:

Ruby has FILE and LINE to give the file and line omber where we are currently at in the code.

Consider
Class X
def my_method
m = ??? # I want m to be assigned “my_method”
end
end

How can I get m set properly?

I guess I could use define_method to define my_method and then pass the name into the function … but that is so ugly and also flattens scope that I may not want flattened.

ri Kernel.caller

On Sat, Sep 4, 2010 at 1:44 AM, Ralph S. [email protected] wrote:

Ruby has FILE and LINE to give the file and line omber where we are currently at in the code.

Consider
 Class X
  def my_method
   m = ???  # I want m to be assigned “my_method”
  end
 end

How can I get m set properly?

class X
def my_method
m = method
end
end
=> nil

X.new.my_method
=> :my_method

Ryan,

Friday, September 3, 2010, 6:50:53 PM, you wrote:

RD> On Sep 3, 2010, at 17:44 , Ralph S. wrote:

Ruby has FILE and LINE to give the file and line omber where we are currently at in the code.

Consider
Class X
def my_method
m = ??? # I want m to be assigned “my_method”
end
end

How can I get m set properly?

I guess I could use define_method to define my_method and then pass the name into the function … but that is so ugly and also flattens scope that I may not want flattened.

RD> ri Kernel.caller

Thanks for pointing that out. Interesting and useful.

I have come up with two alternate methods and I’d like to ask the help
of all those here to help me modify the first method so that it does
what I want


class X
@m = “method_1”
@s = <<-XXX
def #{@m}
puts “In #{@m}”
end
XXX

puts “#{FILE} @ #{LINE}”
puts @s
eval @s

m = “method_2”
eval(“def #{m}; puts “In #{m}”; end”)

end

x = X.new

x.method_1
x.method_2


The code, above, works fine in 1.8.6

Note that I have to define @m before @s. How can I set things up so
that I can define @m after @s so that I can modify @m and get a new
function?

On 04.09.2010 06:09, Ralph S. wrote:

Note that I have to define @m before @s. How can I set things up so
that I can define @m after @s so that I can modify @m and get a new
function?

What are you trying to achieve?

Kind regards

robert

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs