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