Metaprogramming Basics
Send Basics
Ruby can call a method whose name is stored in a variable.
Send Basics
send_basics.rb
class Greeter
def greet
"hello"
end
def shout
"HELLO"
end
def label
"greeting"
end
end
method_name =
greeter = Greeter.new
result = greeter.public_send(method_name)
puts "method=#{method_name}"
puts "result=#{result}"
class Greeter
def greet
"hello"
end
def shout
"HELLO"
end
def label
"greeting"
end
end
method_name =
greeter = Greeter.new
result = greeter.public_send(method_name)
puts "method=#{method_name}"
puts "result=#{result}"
class Greeter
def greet
"hello"
end
def shout
"HELLO"
end
def label
"greeting"
end
end
method_name =
greeter = Greeter.new
result = greeter.public_send(method_name)
puts "method=#{method_name}"
puts "result=#{result}"
dynamic call
`public_send` calls a public method by name while keeping the example bounded and explicit.