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.