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?
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?
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?