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.

`ri Kernel.caller`

···

On Sep 3, 2010, at 17:44 , Ralph Shnelvar 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.

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

···

On Sat, Sep 4, 2010 at 1:44 AM, Ralph Shnelvar <ralphs@dos32.com> wrote:

Ryan,

Friday, September 3, 2010, 6:50:53 PM, you 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`

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 Sep 3, 2010, at 17:44 , Ralph Shnelvar wrote:

What are you trying to achieve?

Kind regards

  robert

···

On 04.09.2010 06:09, Ralph Shnelvar 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?

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/